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.
Lipiec 22nd, 2009 at 12:07
Ciekawy post. Szczególnie podoba mi się zdanie o profesjonalistach na końcu postu
Sierpień 8th, 2011 at 18:05
Hmm… a nie wiesz dlaczego Yahoo (YSlow) zaleca wyłączenie ETagów?
Sierpień 8th, 2011 at 18:20
A zaleca? Kiedy pisałem ten artykuł (2 lata temu), zdecydowanie zalecali jego używanie, ale w sposób właściwy, tzn generowanie go rzeczywiście tak, aby pomagał, a nie był dodatkowym narzutem.
Z resztą na stronie Yahoo developers nadal piszą, że ETagi warto stosować, ale z głową – tzn. trzeba je wyłączyć, kiedy nie przynoszą zysku. Ale to raczej ogólna wskazówka, a nie tylko dotycząca tego mechanizmu.