Al geruime tijd ben ik aan het proberen de afbeeldingen die ik weergeef d.m.v. PHP op mijn website te cachen d.m.v. een 304 not modified header. Op tweakers.net staan hier ook al verschillende topics over, maar maar met die v.b. kwam ik er niet uit en ook met bijv. http://dtbaker.com.au/ran...ges-generated-by-php.html niet omdat ik simpelweg nooit de IF_MODIFIED_SINCE header krijg meegestuurd.
Foto's op mijn website geef ik weer d.m.v. /foto/[id]/[breedte][locatie]image.[ext]. Werkt perfect en wanneer de afbeelding niet bestaat wordt die "on the fly" aangemaakt.
Op apache niveau heb ik zowel mod_expires als mod_headers ingesteld:
http://www.askapache.com/...caching-with-both-modules
Omdat ik met bovenstaande aangeef dat alles wat .php te maken heeft niet gecached heeft heb ik het PHP bestand waarmee ik de foto's weergeef als test veranderd in foto.phpc en .phpc ook laten parsen door PHP.
Daarmee krijg ik de volgende headers in FIREBUG terug:
en wanneer ik in de headers van bijv. een js bestand kijk zie ik wel netjes de IF_NOT_MODIFIED_SINCE header en die bestanden krijgen ook allemaal een 304 header:
If-Modified-Since Wed, 06 Jul 2011 17:25:38 GMT
If-None-Match "12d824f-1eb-4a769e38e4880"
Terwijl ik in mijn foto.php (bestand wat dus de foto's toont) ook het volgende heb staan:
Wat doe ik verkeerd waardoor ik de HTTP_IF_MODIFIED_SINCE && HTTP_IF_NONE_MATCH nooit mee krijg?
Foto's op mijn website geef ik weer d.m.v. /foto/[id]/[breedte][locatie]image.[ext]. Werkt perfect en wanneer de afbeelding niet bestaat wordt die "on the fly" aangemaakt.
Op apache niveau heb ik zowel mod_expires als mod_headers ingesteld:
http://www.askapache.com/...caching-with-both-modules
Omdat ik met bovenstaande aangeef dat alles wat .php te maken heeft niet gecached heeft heb ik het PHP bestand waarmee ik de foto's weergeef als test veranderd in foto.phpc en .phpc ook laten parsen door PHP.
Daarmee krijg ik de volgende headers in FIREBUG terug:
Antwoordheadersbron bekijken Date Thu, 07 Jul 2011 06:14:02 GMT Server Apache Last-Modified Wed, 06 Jul 2011 19:14:59 GMT Cache-Control max-age=0, private, no-store, no-cache, must-revalidate Pragma no-cache Etag "fd27e16d4d166e74df9c9e30a8aa50f6" Content-Length 426761 Keep-Alive timeout=4, max=100 Connection Keep-Alive Content-Type image/jpeg Verzoekheadersbron bekijken Host [host] User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0 Accept image/png,image/*;q=0.8,*/*;q=0.5 Accept-Language nl,en-us;q=0.7,en;q=0.3 Accept-Encoding gzip, deflate Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7 Connection keep-alive Referer [host] Cookie __utma=7044652.1757543232.1309953137.1309979647.1309988720.3; __utmz=7044652.1309953137.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none);PHPSESSID=b5e57cf1ff759d90dc541214291129f7; __utmc=7044652 Authorization Basic YWRtaW46YWRtaW4= Cache-Control max-age=0
en wanneer ik in de headers van bijv. een js bestand kijk zie ik wel netjes de IF_NOT_MODIFIED_SINCE header en die bestanden krijgen ook allemaal een 304 header:
If-Modified-Since Wed, 06 Jul 2011 17:25:38 GMT
If-None-Match "12d824f-1eb-4a769e38e4880"
Terwijl ik in mijn foto.php (bestand wat dus de foto's toont) ook het volgende heb staan:
PHP:
1
2
3
4
5
6
7
| $request_headers=apache_request_headers(); header('ETag: "' . $etag . '"'); if (@strtotime($request_headers['HTTP_IF_MODIFIED_SINCE']) == $last_modified_time || trim($request_headers['HTTP_IF_NONE_MATCH']) == $etag) { header("HTTP/1.1 304 Not Modified"); exit; } |
Wat doe ik verkeerd waardoor ik de HTTP_IF_MODIFIED_SINCE && HTTP_IF_NONE_MATCH nooit mee krijg?