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 »
Popularne
Nazwa padła ofiarą szantażystów, inni polscy hosterzy też zagrożeni?
22
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Premiera Diablo 3 wzbudziła dyskusję na temat gier, które zawsze chcą być online
19
Nowy problem z Windows 8: bootuje się za szybko
10
Amerykańscy rodzice straszeni „e-narkotykami” dostępnymi w Sieci
21
Anonymous upubliczniają 1,7 GB danych wykradzionych Departamentowi Sprawiedliwości USA
11
Blueseed: libertariańska sztuczna wyspa przyciągnęła już ponad sto startupów z całego świata
8
Rewolucja w Firefoksie, nowa łatka czterokrotnie ograniczyła zużycie pamięci
20
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
CVDazzle: makijaż jest w stanie pokonać automatyczne systemy ulicznego monitoringu
3
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Ubuntu 12.04 LTS już dostępny: stabilna dystrybucja na następne pięć lat?
28
Zostań webmasterem polskiego rządu, zarobisz na komfortowe życie dla siebie i swojej rodziny
33
Społeczność
Dave Smith Jestem Pastor Dave Smith prywatny pożyczkodawca pieniądze, z czego ponad...
marcusm Fajna reklama produktu za 500 zł
rza a to starsze aplikacje nie będą działać i kompilacja pod Windows SDK 7.1...
Krzaczor @Jakub Szymański: Możesz zalinkować do opisów jakichś polskich przypadków...
Krzaczor Ale oprogramowanie skompilowane dla Windows 7 ruszy przecież na ósemce...
ankaa Ja to czytam "plejsnow", a nie placek nał :) Nie wiem, co macie z tym...
veramird Są jeszcze studenci i msdaa co pozwoli dużej grupie używać pisać dalej za...
- Najdmen.pl: Konta www z wyłączonym licznikiem transferu od IONIC.pl (1)
- 2BE.PL: [Oferta] Promocja jak złoto w 2BE.PL (1)
- 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)
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ł |








