PHP Cache HTTP header

Odpowiedz Nowy wątek
2012-09-11 14:26
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

Java is to JavaScript as ham is to hamster
edytowany 1x, ostatnio: Pozoga, 2012-09-11 14:28
"Java is to JavaScript as ham is to hamster", tak to jest poprawnie :| - Patryk27 2012-09-11 16:48
@Patryk27 Dzięki poprawiałem ;) - Pozoga 2012-09-11 16:56

Pozostało 580 znaków

2012-09-11 16:00
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.


Pozostało 580 znaków

2012-09-11 16:59
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 ;)


Java is to JavaScript as ham is to hamster

Pozostało 580 znaków

2012-09-11 17:04

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'].


edytowany 1x, ostatnio: dzek69, 2012-09-11 17:12
Nagłówek X-Dupa jak już. - Demonical Monk 2012-09-12 08:18

Pozostało 580 znaków

2012-09-12 00:46
0

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


Java is to JavaScript as ham is to hamster
To nie do końca miała być odpowiedź, chciałem się dowiedzieć czy nagłówki w ogóle dolatują i rozwiązać jakoś problem inaczej, bo na innych serwerach nie użyjesz apache_request_headers(), ale jeżeli uważasz, że Cię to ratuje to ok ;) - dzek69 2012-09-12 16:23
@dzek69 Ratuje mnie to bo korzystam z function_exists('apache_request_headers') ;) Tak więc jeśli PHP jest jako moduł będzie korzystał z apache_request_headers inaczej z $_SERVER ;) I wszędzie powinno działać... - Pozoga 2012-09-12 16:41

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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