Patrzyłem na źródło skryptu użytkownika fatmonkey i zauważyłem w swoim css:
.even { background: #fff url(data:image/gif;base64,R0lGODlhBgASALMAAOfn5+rq6uvr6+zs7O7u7vHx8fPz8/b29vj4+P39/f///wAAAAAAAAAAAAAAAAAAACwAAAAABgASAAAIMAAVCBxIsKDBgwgTDkzAsKGAhxARSJx4oKJFAxgzFtjIkYDHjwNCigxAsiSAkygDAgA7) repeat-x bottom}
Rozumiem, że skrypt fatmonkey chciałby spakować wszystko, co może w źródle, zamiast hostować go na serwerze, co jest dość oczywiste. Ponieważ jednak wcześniej nie widziałem tej techniki, rozważałem jej zastosowanie i wydaje się ona atrakcyjna z wielu powodów:
- Zmniejszy liczbę żądań HTTP przy ładowaniu strony, zwiększając w ten sposób wydajność
- Jeśli nie ma CDN, spowoduje to zmniejszenie ruchu generowanego przez pliki cookie wysyłane wraz z obrazami
- Pliki CSS mogą być buforowane
- Pliki CSS mogą być GZIPPED
Biorąc pod uwagę, że IE6 (na przykład) ma problemy z pamięcią podręczną obrazów tła, wydaje się, że nie jest to najgorszy pomysł ...
Czy jest to dobra czy zła praktyka, dlaczego NIE WYKORZYSTUJESZ jej i jakich narzędzi użyłbyś do kodowania obrazów w base64?
aktualizacja - wyniki testów
testowanie obrazem: http://fragged.org/dev/map-shot.jpg - 133.6Kb
testowy adres URL: http://fragged.org/dev/base64.html
dedykowany plik CSS: http://fragged.org/dev/base64.css - 178.1Kb
Strona kodująca GZIP
wynikowy rozmiar wysłany do klienta (test komponentów YSLOW): 59,3Kb
Zapisywanie danych wysyłanych do przeglądarki klienta: 74,3Kb
Fajnie, ale myślę, że będzie to nieco mniej przydatne w przypadku mniejszych zdjęć.
AKTUALIZACJA: Bryan McQuade, inżynier oprogramowania w Google, pracujący nad PageSpeed, wyraził na ChromeDevSummit 2013, że dane: uris w CSS jest uważany za anty-wzorzec blokujący renderowanie w celu dostarczenia krytycznego / minimalnego CSS podczas jego rozmowy
#perfmatters: Instant mobile web apps
. Zobacz http://developer.chrome.com/devsummit/sessions i miej to na uwadze - rzeczywisty slajd
PRO:
limitów pamięci podręcznej na urządzeniach komórkowych ... CON:
niektóre obrazy powinny być traktowane raczej jako treść niż prosta prezentacja, a zatem lepiej pasują do tagów HTML IMG niż obrazów tła CSS.