Article View: pl.comp.lang.php
Article #219760Re: HTTP_IF_MODIFIED_SINCE, HTTP_IF_NONE_MATCH
From: Peter
Date: Sun, 19 Jul 2009 09:59
Date: Sun, 19 Jul 2009 09:59
73 lines
3427 bytes
3427 bytes
Lemat pisze:
> Peter wrote:
>
>> Napisałem krótki kod, którego zadaniem jest wysłanie odpowiedniego
>> nagłówka 304, jeśli plik nie został zmieniony. Głównie używam tego do
>> plików JavaScript-owych, które muszę parsować przez PHP, a potem wysyłam
>> do przeglądarki. Źródło wygląda tak:
>>
>> http://skroc.pl/5346
>>
>> Sęk w tym, że czasem wyśle się nagłówek 304 Not modified, czasem nie.
>> Ot, losowo. Np. na home.pl wcale to nie działa.
>
> bardzo możliwe, home ma własne widzimisie.
>
>> Może gdzieś w kodzie mam
>> złe założenia. Jakby się komuś chciało zerknąć w kod, to może i innym
>> przyda się ;-)
>>
> ja bym strzelił, że porównanie:
> strtotime(trim($_SERVER['HTTP_IF_MODIFIED_SINCE'])) == filemtime($path))
>
> nie działa i zrobił tak:
> trim($_SERVER['HTTP_IF_MODIFIED_SINCE']) == gmdate('D, d M Y
> H:i:s',filemtime($path))). ' GMT'
Można i tak. Wprowadziłem zmiany.
> dokładniej to strtotime zwraca "nieprawidłowy" wynik:
> "This function will use the TZ environment variable (if available) to
> calculate the timestamp".
Dokonałem modyfikacji, które wskazał porneL oraz powyższe i nadal mi nie
wysyłało z nagłówkiem 304. W końcu zacząłem podejrzewać, że może reguły
w htaccess coś przeszkadzają. No i jest tak, że ten fragment, w którym
ustawiam Cache-control:
<ifModule mod_headers.c>
<filesMatch "\\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
<filesMatch "\\.(css)$">
Header set Cache-Control "max-age=604800, public"
</filesMatch>
<filesMatch "\\.(js)$">
Header set Cache-Control "max-age=216000, private"
</filesMatch>
<filesMatch "\\.(xml|txt)$">
Header set Cache-Control "max-age=216000, public, must-revalidate"
</filesMatch>
<filesMatch "\\.(html|htm|php)$">
Header set Cache-Control "max-age=1, private, must-revalidate"
</filesMatch>
</ifModule>
konkretnie ten fragment
<filesMatch "\\.(html|htm|php)$">
Header set Cache-Control "max-age=1, private, must-revalidate"
</filesMatch>
każe permanentnie ściągać plik, ponieważ jest wysyłany z rozszerzeniem
.php i nagłówek 304 jest kasowany. Tyle, że na innym hostingu, np.
nazwa.pl, sprawdziłem i w tej samej konfiguracji nagłówek 304 jest wysyłany.
Wnioski mam 2:
* Usunąć ustawianie Cache-control dla plików z roszerzeniem .html, .htm
i .php
* Poszukać innego rozwiązania. Jakiego?
--
Peter
Technical Details
Message-ID:
<h3uqjf$lag$1@node2.news.atman.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!newsfeed.atman.pl!not-for-mailReferences:
<h3s4n0$bd4$1@node2.news.atman.pl> <h3s85v$jir$1@atlantis.news.neostrada.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!newsfeed.atman.pl!not-for-mail From: Peter <peter.may@poczta.fm> Newsgroups: pl.comp.lang.php Subject: Re: HTTP_IF_MODIFIED_SINCE, HTTP_IF_NONE_MATCH Date: Sun, 19 Jul 2009 11:59:07 +0200 Organization: ATMAN Lines: 73 Message-ID: <h3uqjf$lag$1@node2.news.atman.pl> References: <h3s4n0$bd4$1@node2.news.atman.pl> <h3s85v$jir$1@atlantis.news.neostrada.pl> NNTP-Posting-Host: inet20909na-2.nat.umts.dynamic.eranet.pl Mime-Version: 1.0 X-Trace: node2.news.atman.pl 1247997361 21840 213.158.196.66 (19 Jul 2009 09:56:01 GMT) X-Complaints-To: usenet@atman.pl NNTP-Posting-Date: Sun, 19 Jul 2009 09:56:01 +0000 (UTC) User-Agent: Thunderbird 2.0.0.22 (Windows/20090605) In-Reply-To: <h3s85v$jir$1@atlantis.news.neostrada.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit