PHP Cache HTTP header

0

Hej.

Próbuję obsłużyć statyczny cache w PHP ale mam mały problem. We wszystkich tutorialach używają $_SERVER['HTTP_IF_MODIFIED_SINCE'] i $_SERVER['HTTP_IF_NONE_MATCH']. Niestety u mnie zwracają null. Nagłówki do serwera są wysyłane poprawnie. etag i last modifier idą do przeglądarki i z powrotem przy zapytaniu. Co jest nie tak? Czy powinienem zmienić coś w ustawieniach serwera?
Korzystam z:
Server: Apache/2.2.20 (Ubuntu)
X-Powered-By: PHP/5.3.6-13ubuntu3.8

W razie czego dodam nagłówki:

Response Headersview source
Cache-Control	must-revalidate, post-check=0, pre-check=0
Connection	Keep-Alive, Keep-Alive
Content-Description	File Transfer
Content-Length	18338
Content-Transfer-Encoding	binary
Content-Type	image/png
Date	Tue, 11 Sep 2012 12:25:19 GMT
Etag	"bb7abfa0326ec16b635128fecc21c833"
Expires	0
Keep-Alive	timeout=5, max=100
Last-Modified	1347317413
Pragma	public
Server	Apache/2.2.20 (Ubuntu)
X-Powered-By	PHP/5.3.6-13ubuntu3.8
Request Headersview source
Accept	text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding	gzip, deflate
Accept-Language	en-us,en;q=0.5
Cache-Control	max-age=0
Connection	keep-alive
Cookie	PHPSESSID=4k1lu52e747b5ll8bh10re04t3
Host	localhost
If-Modified-Since	1347317413
If-None-Match	"bb7abfa0326ec16b635128fecc21c833"
User-Agent	Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:15.0) Gecko/20100101 Firefox/15.0
0

Albo Ci się wydaje, że wysyłasz takie nagłówki (skąd bierzesz info o nagłówkach?), albo masz wyraźnie skopaną konfigurację PHP.
Utwórz sobie prosty skrypt php:

<?php var_dump($_SERVER); ?>

Następnie używając narzędzia podobnego do tego: (Tu: Opera Dragonfly, wbudowane w przeglądarkę)
http://i.imgur.com/IC1n0.jpg
Wyślij pojedyncze żądanie dopisując nagłówek If-Modified-Since i sprawdź czy w odpowiedzi masz swój nagłówek.

0
dzek69 napisał(a):

Albo Ci się wydaje, że wysyłasz takie nagłówki (skąd bierzesz info o nagłówkach?),

Z firebug.

dzek69 napisał(a):

Utwórz sobie prosty skrypt php:

<?php var_dump($_SERVER); ?>

Już to zrobiłem. Właśnie tak stwierdziłem że tych pól po prostu nie ma.

dzek69 napisał(a):

Następnie używając narzędzia podobnego do tego: (Tu: Opera Dragonfly, wbudowane w przeglądarkę)
http://i.imgur.com/IC1n0.jpg
Wyślij pojedyncze żądanie dopisując nagłówek If-Modified-Since i sprawdź czy w odpowiedzi masz swój nagłówek.

Z firebuga wynika że nagłówki lecą dobre a coś z PHP jest nie tak. Więc sprawdzanie tego nie ma sensu ;)

0

A zobacz czy widać ten nagłówek przez to: http://php.net/manual/pl/function.apache-request-headers.php

Edit: Sprawdź czy w ogóle zmienna serwer zawiera jakieś elementy o kluczu HTTP_*. Spróbuj dopisać do żądania jakiś nieistniejący oficjalnie nagłówek, np: Dupa: dupa i zobacz czy powstanie $_SERVER['HTTP_DUPA'].

0

Dzięki wielkie apache_request_headers działa świetnie :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1