Nagłówek Expires - czy to coś w ogóle daje?

Czytam właśnie tę książkę i postanowiłem sprawdzić jak się ma używanie nagłówka Expires w praktyce. W książce czytam, że zastosowanie tego nagłówka powoduje, że przeglądarka nie komunikuje się w ogóle z serwerem, a pobiera dany element z pamięci podręcznej. W przypadku warunkowego wyrażenia GET przeglądarka sprawdza czy dany element jest aktualny wysyłając żądanie HTTP, którego rzekomo można dzięki Expires uniknąć.

Tymczasem badając stronę wykorzystującą Expires z użyciem Firebug, wychodzi na to, że stosowanie ich również sprawia, że przeglądarka łączy się z serwerem i zwraca status 304 not modified. No i gdzie te oszczędności?

Czegoś chyba nie rozumiem. Wyjaśni ktoś?

2 lata temu | edytowane przez: yankees 31

  • Tak, technika polegająca na ustawieniu Expires daleko w przyszłość naprawdę ogranicza ilość żądań do serwera. Praktycznie wszystkie przeglądarki korzystają z tej informacji pod warunkiem, że nie używałeś równocześnie, np. E-tag, które wymusza zapytanie się serwera o wersję zasobu.

    Druga sprawa,to że Firebug wyświetla zawsze wszystkie zasoby również te ściągnięte z cache'u.

  • Czyli, że strona nie była modyfikowana od ostatniego (twojego) jej pobierania i nie będzie wysyłana podnownie, bo przeglądarka posiada jej obecną wersje w pamięci cache.

  • @dawciobiel: Chyba nie zrozumiałeś o co mi chodzi. Souders w swojej książce napisał:

    "Nagłówek Expires eliminuje etap wykonywanej przez serwer weryfikacji elementu poprzez wyraźne określenie daty, do której przeglądarka może wykorzystywać daną kopię buforowanego elementu"

    Ja to rozumiem w ten sposób, że jeśli jakiś element zawiera nagłówek Expires, to nie ma w ogóle komunikacji z serwerem, co wiąże się z oszczędnością czasu załadowania strony. Tymczasem w Firebug widzę, że element i tak jest sprawdzany, czyli żądanie HTTP jest.

    Albo Firebug źle "mierzy", albo Souders się myli, albo nie rozumiem istoty działania. Podejrzewam, że to pierwsze :)

  • Istotne jest to "może". Nagłówek Expires to sugestia dla przeglądarki, żeby skorzystała z cache, a nie nakaz.

  • Druga sprawa,to że Firebug wyświetla zawsze wszystkie zasoby również te ściągnięte z cache'u.

    No i wszystko jasne. Bardzo dziękuję za tą odpowiedź.

Zaloguj się, aby dodać swoją odpowiedź