Data URI: jak przyśpieszyć ładowanie stron umieszczając grafikę w CSS?
Jednym z najlepszych sposobów przyśpieszenia czasu ładowania naszych stron jest ograniczenie liczby zapytań HTTP. Każde dodatkowe żądanie dodaje nawet kilkadziesiąt milisekund do czasu załadowania się strony i zbytecznie obciąża przeglądarkę. Teraz gdy Google zaczyna uwzględniać w swoim PageRanku czas ładowania się stron, przyśpieszenie ich jest sprawą kluczową dla naszej strony czy bloga.
Wyniki badań deweloperów Yahoo! pokazały, że pobieranie samego kodu HTML odpowiada za jakieś 20% czasu wczytywania się strony. Reszta to wczytywanie skryptów, arkuszy stylów i wywoływanych przez nich obrazków. O tym jak efektywnie wykorzystywać pliki graficzne za pomocą tzw. CSS Sprites pisaliśmy tutaj. Tym razem wyjaśnimy, jak umieścić same obrazki wewnątrz plików CSS.
Czym jest Data URI?
Wewnątrz plików CSS możemy umieszczać grafiki, zakodowane za pomocą tzw. Data URI. Jest to forma zapisu danych binarnych jako ciągów znaków zakodowanych w formacie Base64. Pozwala ono zapisać ciąg bajtów jako ciąg znaków, dzieląc go na grupy po trzy bajty (24 bity). Każda taka grupa zostaje podzielona na cztery jednostki 6-bitowe. Istnieją zatem 64 możliwe wartości dla każdej takiej jednostki. Każda taka wartość zostaje zapisana znakiem będącym cyfrą systemu liczbowego o podstawie 64. (Na przykład 010 odpowiada A64 a 6310 /64).
Podstawowy format zapisu Data URI został wyszczególniony w dokumencie RFC 2397. Wygląda on następująco:
data:[<mime type>][;charset=<charset>][;base64],<encoded data>
gdzie
data to protokół URI,
mime type to rodzaj danych, domyślnie ustawiany na text/plain, np. w wypadku obrazków JPG musi być określony jako image/jpeg,
charset to kodowanie znaków w tekście, dla nas nieistotne,
base64 oznacza, że stosujemy kodowanie base64 (w przeciwnym wypadku dane zostaną potraktowane jako zapisane w normalnym kodowaniu URL-i,
zaś encoded data to oczywiście ciąg naszych danych, składający się ze znaków alfanumerycznych oraz '+' i '/'.
Załóżmy teraz, że zdefiniowaliśmy w arkuszu stylów obrazek:
.obrazek { backgroud: url(pics/obrazek.jpg); }
W ten sposób ładujemy jednak grafikę uruchamiając kolejne zapytanie HTTP. Dzięki DataURI nasz obrazek można zapisać następująco (dla wygody Czytelników mocno skróciliśmy blok base64):
.obrazek { background: url(data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEPERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/wAARCACwAUADASIAAhEBAxEB/8QAHQAAAgIDAQEBAAAAAAAAAAAABAUCAwEGBwAICf/EA
FFWyn0zgmhZJcqMeKKgmUwBeM+9NxtmU6JqQTg+KvicHt9qCdlUZXuaJtWGQO580GPE/9k=);
}
Na pierwszy rzut oka taki sposób zapisu przytłacza – jednak w praktyce jest znacznie efektywniejszy. Umieszczony w arkuszu stylów obrazek eliminuje potrzebę dodatkowego zapytania. W wypadku jednego obrazka problem nie jest duży, ale jeśli nasza strona korzysta z dziesiątków obrazków, oszczędność jest niebagatelna. Dodatkowo możemy taki arkusz stylów skompresować za pomocą gzipa – poleceniem gzip -c style.css. Dane zapisane w base64 bardzo dobrze się w ten sposób kompresują.
«poprzednia 1 2 następna »
Polecamy
Reklama
Popularne
Pobierałeś pirackie pliki? Uważaj! Kontrole antypirackie w domach użytkowników to codzienność
36
Pobieraczek.pl pozwie internautów, którzy nie chcą płacić abonamentu
1455
Debata w sprawie ACTA: internauci spodziewali się chyba czegoś innego
14
Wynalazca WWW przed sądem: walczy tam o wolny dostęp do webowych technologii dla każdego
8
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
15
Internet w EU bez Facebooka i Google? Firmy nie mają wyboru: albo się dostosują, albo…
10
Zaktualizuj PHP do wersji 5.4, zyskasz za darmo nawet o kilkudziesiąt procent wyższą wydajność aplikacji
6
MSWiA zamówiło narzędzia do „złamania” Tora i podsłuchiwania internautów. Czy złamało przy tym prawo?
89
[Aktualizacja] Facebook zablokował Demotywatory.pl. W czym zawiniły?
36
FBI zamknęło Megaupload. Anonimowi dali się sprowokować. Teraz ich akcja uzasadni potrzebę SOPA?
17
Pobieraczek.pl pozwie internautów, którzy nie chcą płacić abonamentu
1455
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
15
„Donald matole, twój rząd dopadną kibole” – hakerska elita przyłącza się do walki z ACTA
23
Pobierałeś pirackie pliki? Uważaj! Kontrole antypirackie w domach użytkowników to codzienność
36
Społeczność
ady "Po złożeniu podpisu, dane biometryczne zostają trwale powiązane z treścią...
WebDev @slawek22
OK. Rozumiem i wiem, że koncerny stosują regionalizacje i nie...
slawek22 >są inne rodzime serwisy VOD z legalny filmami
WebDev no fakt... jeśli...
WebDev @BLACK BEAR®
"bo denerwujesz mi ludzi na forum” lool
Minister Zdrowia...
tobas ClickShop bardzo wolno działa!!!
Nie dajcie się nabrać na wygląd i...
blackbear @WebDev, widzę że muszę Ci rozjaśnić we łbie. Czytaj więc i nie pisz...
Jay Brak obsługi aplikacji x86/x64 ze zwykłych desktopów to kręcenie na siebie...
- gardius: Dobra hurtownia sportowa (1)
- gardius: Tanie książki gdzie warto kupować? (1)
- Najdmen.pl: PROMOCJA, 500 DOMEN .EU ZA 1 PLN NETTO ! (1)
- VMLine: [Oferta] Serwery VPS Xen-HVM/OpenVZ z darmową administracją (2)
- Marek: Generowanie PDFa (2)
- Marek: problem z menu (2)
- Marek: Własne checkboxy w HTML,CSS (1)
Polecane książki
Praca
Czytaj Webhosting
Chcesz być na bieżąco z naszymi informacjami? Zapisz się na Newsletter.
Zarejestruj domenę
Sprawdź dostępność swojej domeny:
| .pl: | 0 zł | .com: | 19.90 zł | |
|---|---|---|---|---|
| .com.pl: | 0 zł | .eu: | 19.90 zł |








