🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.php
Article #219760

Re: HTTP_IF_MODIFIED_SINCE, HTTP_IF_NONE_MATCH

#219760
From: Peter
Date: Sun, 19 Jul 2009 09:59
73 lines
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-mail
References: <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