ETag – co to jest i z czym to się je
Nie czuję się specjalistą z dziedziny nagłówków HTTP. Jednak nie udało mi się znaleźć żadnej dobrej strony po polsku, która omawiałaby czym są Entity Tags. Postanowiliśmy więc podzielić się wiedzą, jaką sami uzyskaliśmy przeszukując sieć oraz poprawiając nasze strony www.
Definicja
ETag to specjalny znacznik wysyłany wraz z dokumentem przez serwer www. Jego zadanie jest proste – ma informować o tym, czy dokument uległ zmianie i czy jest konieczność jego ponownego pobrania z serwera.
Jak tworzone są ETagi
ETag tworzony jest zazwyczaj przez serwer www na podstawie rozmiaru, czasu ostatniej modyfikacji czy sumy kontrolnej pliku. Jest oczywiście możliwość ręcznego dodawania takich tagów, np. dzięki skryptom PHP. Moim zdaniem, nie warto zajmować się tym samemu, gdy Apache może zrobić to za nas.
Jak my to robimy
Dla programistów Programy optymalizacja jest sprawą bardzo ważną. Dlatego nie zadowoliliśmy się informacją, że ETagi istnieją – zaczęliśmy je wykorzystywać, poprawiając osiągi tworzonych przez nas stron www. W katalogu głównym strony www umieszczamy plik .htaccess, będący instrukcją dla serwera www. Jego treść wygląda następująco:
FileETag MTime Size
Te kilka znaków pozwala zaoszczędzić sporo transferu. Instrukcje te mówią: kiedy wysyłasz plik z serwera, dodaj do niego ETag pliku (FileETag) używając do jego budowy daty ostatniej modyfikacji tego pliku (MTime) i rozmiaru tego pliku (Size). Przeglądarka zapamiętuje ten znacznik. Kiedy następnym razem poprosi o ten sam plik doda jego ETag do żądania. Jeśli plik nie uległ zmianie serwer zamiast wysyłać kod 200 OK, odpowiem kodem 304 Not Modified. Oznacza to, że przeglądarka posiada najnowszą wersję dokumentu i może odczytać ją z cachu, bez konieczności pobierania z serwera.
Takie “dobre praktyki programistyczne” świadczą o kunszcie profesjonalisty. Ktoś, kto używa tylko narzędzi WYSWIG, a nie potrafi optymalizować tej strony, nie może twierdzić, że tworzy strony www. Jeśli chcesz mówić o sobie profesjonalista – zacznij używać ETagów.
YSlow – pomoc w optymalizacji witryn www
Kiedy projektujemy witrynę www ogromny nacisk kładziemy na jej rozmiar – ma być tak mała i tak szybko dostępna dla użytkownika jak to tylko możliwe. Dbamy zarówno o własny transfer na serwerze jak i o transfer użytkownika internetu, który zechce taką stronę obejrzeć. usuwanie niepotrzebnych plików, nieużywanych funkcji, system cache’owanie po stronie serwera – to wciąż za mało.
Ostatnio przeglądając zasoby sieci trafiłem na stronę http://developer.yahoo.com/yslow/ Znajduje się tam opis doskonałej, moim zdaniem, wtyczki do przeglądarki Mozilla Firefox – YSlow.
Dlaczego YSlow jest taki dobry? Bo potrafi pokazać, gdzie nasza strona wymaga poprawek. Mało tego! Podpowiada jak te poprawki wprowadzić, kierując na strony Yahoo Developer Network, gdzie opisane są zasady optymalizacji czasu odpowiedzi stron www.
Postanowiliśmy więc kierować się tymi zasadami. YSlow ocenił naszą stronę dość nisko – była to kategoria E (przy najbardziej restrykcyjnym teście). Po kilku niewielkich zmianach otrzymaliśmy już przydział do kategorii D – ale to nadal nas nie satysfakcjonowało. Trochę czasu zajęło nam znalezienie rozwiązań naszych problemów. W ten sposób osiągnęliśmy to, co prezentujemy teraz – rank B w teście dużych serwisów i rank A w teście dla małych stron www i blogów.
Najważniejsze jest to, że w chwili obecnej nie możemy poprawić nic więcej. YSlow zwraca uwagę m.in. na tagi Expires Date w nagłówkach HTML jak i zmniejszanie rozmiaru strony za pomocą algorytmu GZIP. Niestety, polskie firmy hostingowe nie pozwalają na używanie tych nagłówków. Jest też tam oceniane coś, co nazywa się Content Delivery Network. Jest to jednak test, który dotyczy tylko dużych witryn, które mogą pozwolić sobie na taki koszt. Ale co to właściwie jest ten CDN. Prostymi słowy: jeśli zdjęcia/obrazki są umieszczone na wielu serwerach, których nazwy są umieszczone w pliku HTML, to klient może pobierać równolegle różne zdjęcia z różnych serwerów. I o to właśnie chodzi.
Z ciekawości przeprowadziłem test na stronie głównej naszej firmy i stronie należącej do googlesites. Myślę, że wynik o 3% gorszy od google nie jest ujmą na honorze.