Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: If-Modified-Since [solved]
Forum PHP.pl > Forum > PHP
antonone
Witam,

Interesują mnie okoliczności, kiedy klient wysyła nagłówek If-Modified-Since. Z tego co zdążyłem się zorientować, powinien on to robić zawsze, gdy otrzyma od serwera nagłówek Last-Modified, jednak w ten sposób działa tylko IE7, natomiast O i FF zdają się ten nagłówek w niewytłumaczalny sposób ignorować.

Dla testów stworzyłem małą stronę z taką treścią:

  1. <?php
  2.  
  3. $page_data = time();
  4. $last_mod = gmdate('D, d M Y H:i:s', $page_data). ' GMT';
  5.  
  6. header("Last-Modified: $last_mod");
  7. header("Pragma: public");
  8. header("Cache-Control: public");
  9. header('Expires: 0');
  10.  
  11. if(isset($_SERVER["HTTP_IF_MODIFIED_SINCE"])) {
  12. //header("HTTP/1.0 304 Not Modified");
  13. echo "jest If-Modified-Since: " . $_SERVER["HTTP_IF_MODIFIED_SINCE"];
  14. } else { 
  15. echo "<pre>";
  16. echo time();
  17. print_r($_SERVER);
  18. echo "</pre>";
  19. }
  20.  
  21. ?>

Teoretycznie, przy pierwszym wejściu na tą stronę klient powinien wyświetlić zawartość $_SERVER (przez print_r), a przy każdym następnym ciąg znaków "jest If-Modified-Since: (... data ...)", jednak dzieje się tak tylko w IE7. O i FF za każdym razem wyświetlają $_SERVER. Strona znajduje się tutaj.

Stąd moje pytanie, jakie nagłówki mam wysłać, aby FF i O przy następnym żądaniu wysłały nagłówek If-Modified-Since? Podejrzewam, że coś pominąłem, pytanie tylko co... dzięki za każdą sugestię winksmiley.jpg.


Udało mi się nieco zmniejszyć niewiadomy obszar wyłączając z niego O winksmiley.jpg. Okazuje się, że O wysyła ten nagłówek, ale dopiero przy zamknięciu zakładki ze stroną i otwarciu nowej, natomiast page refresh działa u niej w ten sam sposób, jak w IE działa ctrl+f5. Teraz nie rozumiem tylko dlaczego nagłówek ten nie jest wysyłany w FF, tak więc pytanie nadal jest aktualne smile.gif.
Force
Firefox wysyła ten nagłówek tylko wtedy kiedy plik jest w jego cache i kiedy użytkownik kliknie przycisk odśwież stronę. Jeżeli wchodzisz na stronę poprzez wpisanie adresu lub kliknięcie linku, żeby niepotrzebnie nie spowalniać ładowania strony i nie marnować transferu będzie wczytywał pliki z swojego cache bez odpytywania serwera o to czy plik uległ zmianie.
Zainstaluj sobie dodatek do FF http live headers - http://livehttpheaders.mozdev.org/ to będziesz mógł zobaczyć czy hany nagłówek jest wysyłany i odbierany.
antonone
Dzięki za odpowiedź, nagłówki sprawdzałem Wiresharkiem snitch.gif, tak czy inaczej dziś doszedłem w czym leży problem. Sama metoda jest OK (tak dla czytających ten wątek w przyszłości snitch.gif), natomiast zdziwiło mnie to, że miałem po prostu wyłączone cache'owanie stron w FF. Po włączeniu cache'owania (przez about:config -> "cache") FF zachowuje się w poprawny sposób. Teraz pozostaje mi jedynie odpowiedzieć na pytanie co wyłączyło to cache'owanie, podejrzewam że któryś z pluginów za tym stoi winksmiley.jpg.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.