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=259200, 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=85ad7ab8927784124fccb7e4fd2472ab; 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
> Comme c'est l�, �a sent le proxy � plein nez, � mon avis.
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
<http://je.m.arrete.free.fr/info.php5>
<http://je.m.arrete.free.fr/info>
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
<http://les.pages.perso.chez.free.fr/index.php?category/En-cas-de-probleme>
--
St�phane Moriaux avec/with iMac-intel
Le 09/10/2011 11:33, Dominique Ottello a ï¿œcrit :
>
> 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');
>
> Expires: Thu, 19 Nov 1981 08:52:00 GMT
> Last-Modified: Fri, 23 Sep 2011 00:00:00 GMT
>
> Le Last-Modified est bon, mais Expires devrait indiquer :
> Fri, 14 Oct 2011 09:30:06 GMT
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: '.
Ainsi donc, les fonctions time() et gmdate() sont hors de cause.
Et probablement aussi la fonction header().
> 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.
Cela tend ᅵ confirmer que la fonction header() est hors de cause. Mais
vu que c'est la mᅵme chose sur trois serveurs, j'aurais tendance ᅵ
soupï¿œonner comme Pascal des directives d'initialisation ou des fichiers
.htaccess . Est-ce que tu as la mï¿œme chose avec des fichiers statiques ?
Et si tu mets un fichier ᅵ la racine du site, c'est toujours le cas ?
Note : je ne peux pas tester sur ton site directement, je passe derriï¿œre
un proxy filtrant qui me l'interdit.
> 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.
Je peux me tromper, mais je suspecte que ton code PHP est complï¿œtement
ï¿œtranger au problï¿œme.
Cordialement,
--
Olivier Miakinen
Ah oui, je l'avais lu mais sans percuter (je cherchais juste ᅵ vᅵrifier
le format de la date) :
<http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html>
14.21 Expires
...
Note: if a response includes a Cache-Control field with the max-
age directive (see section 14.9.3), that directive overrides the
Expires field.
</>
> Cela tend � confirmer que la fonction header() est hors de cause. Mais
> vu que c'est la m�me chose sur trois serveurs, j'aurais tendance �
> soup�onner comme Pascal des directives d'initialisation ou des fichiers
> .htaccess .
Maintenant (enfin) les ent�tes correspondent � ce que j'envoie, et ce
sur les trois serveurs :
HTTP/1.1 200 OK
Date: Mon, 10 Oct 2011 17:54:05 GMT
Server: Apache/ProXad [Aug 9 2008 02:45:09]
Cache-Control: max-age=432000, must-revalidate
Content-Encoding: gzip
Expires: Sat, 15 Oct 2011 17:54:04 GMT
Vary: Accept-Encoding
X-Powered-By: PHP/5.1.3RC4-dev
Set-Cookie: PHPSESSID=9301ee036d4439645dbc5f0fb25fae49; path=/
Last-Modified: Fri, 23 Sep 2011 00:00:00 GMT
Connection: close
Content-Type: text/html; charset=iso-8859-1
Pour ce faire, il faut INTERDIRE � PHP de remplacer les ent�tes du
client par les ent�tes par d�faut. Donc, avant d'envoyer les header :
session_cache_limiter( FALSE );
--
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