Entêtes "cache" différentes de celles générées
Le
Dominique Ottello
Bonjour,
Je ne comprend pas pourquoi les entêtes (header) vues, sous Firefox, par
l'extension Live HTTP Headers ne reflètent pas celles qui sont générées
par les directives PHP header();
Par exemple, les entêtes de mon site http://aviatechno.free.fr sont
générées par le code PHP (Les calculs de temps ont été préalablement
vérifiés) :
header("content-type:text/html; charset=$charset");
header('Vary: Accept-Encoding');
header('Cache-Control: max-age%9200, must-revalidate');
header('Last-Modified: '.date('D, d M Y H:i:s',$modified).' GMT');
$offset = 60 * 60 * 24 * 5; //5 jours
header('Expires: '.gmdate('D, d M Y H:i:s', time() + $offset).' GMT');
ob_start("ob_gzhandler");
session_start();
et on voit, via LiveHTTPHeaders :
HTTP/1.1 200 OK
Date: Sun, 09 Oct 2011 09:27:04 GMT
Server: Apache/ProXad [Aug 9 2008 02:45:09]
Cache-Control: no-store, no-cache, must-revalidate, post-check=0,
pre-check=0
Content-Encoding: gzip
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
Vary: Accept-Encoding
X-Powered-By: PHP/5.1.3RC4-dev
Set-Cookie: PHPSESSID ad7ab8927784124fccb7e4fd2472ab; path=/
Last-Modified: Fri, 23 Sep 2011 00:00:00 GMT
Connection: close
Content-Type: text/html; charset=iso-8859-1
Le Last-Modified est bon, mais Expires devrait indiquer :
Fri, 14 Oct 2011 09:30:06 GMT
D'autre part, je n'envoie pas, pour Cache-Control : no-store, no-cache,
post-check=0, pre-check=0 ni Pragma: no-cache.
D'où cela vient-il ?
Que n'ai-je pas compris ?
--
Aujourd'hui, l'idéal du progrès est remplacé par l'idéal de l'innovation :
il ne s'agit pas que ce soit mieux, il s'agit seulement que ce soit nouveau,
même si c'est pire qu'avant et cela de toute évidence. Montherlant
Technologie aéronautique - http://ottello.net - Les anciens de Vilgénis
Je ne comprend pas pourquoi les entêtes (header) vues, sous Firefox, par
l'extension Live HTTP Headers ne reflètent pas celles qui sont générées
par les directives PHP header();
Par exemple, les entêtes de mon site http://aviatechno.free.fr sont
générées par le code PHP (Les calculs de temps ont été préalablement
vérifiés) :
header("content-type:text/html; charset=$charset");
header('Vary: Accept-Encoding');
header('Cache-Control: max-age%9200, must-revalidate');
header('Last-Modified: '.date('D, d M Y H:i:s',$modified).' GMT');
$offset = 60 * 60 * 24 * 5; //5 jours
header('Expires: '.gmdate('D, d M Y H:i:s', time() + $offset).' GMT');
ob_start("ob_gzhandler");
session_start();
et on voit, via LiveHTTPHeaders :
HTTP/1.1 200 OK
Date: Sun, 09 Oct 2011 09:27:04 GMT
Server: Apache/ProXad [Aug 9 2008 02:45:09]
Cache-Control: no-store, no-cache, must-revalidate, post-check=0,
pre-check=0
Content-Encoding: gzip
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
Vary: Accept-Encoding
X-Powered-By: PHP/5.1.3RC4-dev
Set-Cookie: PHPSESSID ad7ab8927784124fccb7e4fd2472ab; path=/
Last-Modified: Fri, 23 Sep 2011 00:00:00 GMT
Connection: close
Content-Type: text/html; charset=iso-8859-1
Le Last-Modified est bon, mais Expires devrait indiquer :
Fri, 14 Oct 2011 09:30:06 GMT
D'autre part, je n'envoie pas, pour Cache-Control : no-store, no-cache,
post-check=0, pre-check=0 ni Pragma: no-cache.
D'où cela vient-il ?
Que n'ai-je pas compris ?
--
Aujourd'hui, l'idéal du progrès est remplacé par l'idéal de l'innovation :
il ne s'agit pas que ce soit mieux, il s'agit seulement que ce soit nouveau,
même si c'est pire qu'avant et cela de toute évidence. Montherlant
Technologie aéronautique - http://ottello.net - Les anciens de Vilgénis

Poser une question


Bonjour,
Déjà le serveur qui fournit le fichier traité par PHP peut rajouter sa
sauce, avec des directives d'initialisation ou de htaccess.
Comme c'est là, ça sent le proxy à plein nez, à mon avis.
C'est le seul, sur le réseau, qui travaille sur la couche applicative et
capable de faire ces modifs.
--
Cordialement,
Pascal
A priori (À moins que ce soit à mon insu), je ne passe pas par un proxy.
Je vais voir du côté de chez Free.
chez Free ça n'a pas l'air de faire gd' chose
hop!
Date: Sun, 09 Oct 2011 14:38:53 GMT
Server: Apache/ProXad [Aug 5 2010 16:17:11]
Content-Location: info.php
TCN: choice
Vary: negotiate,accept
X-Powered-By: PHP/4.4.3-dev
Connection: close
Content-Type: text/html
200 OK
ou bien, si php 5, re-hop! :
Date: Sun, 09 Oct 2011 14:42:12 GMT
Server: Apache/ProXad [Aug 5 2010 16:17:11]
X-Powered-By: PHP/5.1.3RC4-dev
Connection: close
Content-Type: text/html
200 OK
--
Stéphane Moriaux avec/with iMac-intel
Le 09/10/2011 11:33, Dominique Ottello a écrit :
Quelques questions pour avancer :
- que valent $modified et time() ?
- qu'est-ce qui change si tu mets time() au lieu de $modified dans
l'entête Last-Modified ?
- qu'est-ce qui change si tu mets $modified au lieu de time() dans
l'entête Expires ?
- qu'est-ce qui change si tu mets gmdate() au lieu de date() dans
l'entête Last-Modified ?
- qu'est-ce qui change si tu mets date() au lieu de gmdate() dans
l'entête Expires ?
Tu peux aussi essayer de rajouter des entêtes de test :
header('XDateModified: '.date('D, d M Y H:i:s',$modified).' GMT');
header('XGmdateModified: '.gmdate('D, d M Y H:i:s',$modified).' GMT');
$offset = 60 * 60 * 24 * 5; //5 jours
header('XDateTime: '.date('D, d M Y H:i:s', time()).' GMT');
header('XGmdateTime: '.gmdate('D, d M Y H:i:s', time()).' GMT');
header('XDateTimeOffset: '.
date('D, d M Y H:i:s', time() + $offset).' GMT');
header('XGmdateTimeOffset: '.
gmdate('D, d M Y H:i:s', time() + $offset).' GMT');
Les entêtes de test passent toutes très bien tant en local qu'en réel
chez Free :
HTTP/1.1 200 OK
Date: Mon, 10 Oct 2011 15:10:34 GMT
Server: Apache/ProXad [Aug 9 2008 02:45:09]
Cache-Control: no-store, no-cache, must-revalidate, post-check=0,
pre-check=0
Content-Encoding: gzip
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
Vary: Accept-Encoding
X-Powered-By: PHP/5.1.3RC4-dev
XDateModified: Fri, 23 Sep 2011 00:00:00 GMT
XDateTime: Mon, 10 Oct 2011 17:10:34 GMT
XDateTimeOffset: Sat, 15 Oct 2011 17:10:34 GMT
XGmdateModified: Thu, 22 Sep 2011 22:00:00 GMT
XGmdateTime: Mon, 10 Oct 2011 15:10:34 GMT
XGmdateTimeOffset: Sat, 15 Oct 2011 15:10:34 GMT
Set-Cookie: PHPSESSID¯b6496a5bfdf546e4978379293f8560; path=/
Last-Modified: Fri, 23 Sep 2011 00:00:00 GMT
Connection: close
Content-Type: text/html; charset=iso-8859-1
Ce qui m'intrigue fortement c'est cette entête Expires :
Expires: Thu, 19 Nov 1981 08:52:00 GMT
TOUJOURS exactement la même, en local, chez Free et chez 1and1.
J'ai comme l'impression qu'il me manque une ou plusieurs instruction(s)
PHP avant d'envoyer certains header pour qu'ils soient pris en compte
parce que, comme je l'ai écrit ci-dessus, le problème est le même en
local, ce que je n'avais pas regardé avant.
--
Il vaut mieux ignorer où l'on est, et savoir qu'on l'ignore, que de se
croire avec confiance où l'on n'est pas. Jean Dominique Cassini.
Technologie aéronautique - http://ottello.net - Les anciens de Vilgénis