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();
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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Pascal Poncet
Le 09/10/2011 11:33, Dominique Ottello a écrit :
Bonjour,
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();
Déjà le serveur qui fournit le fichier traité par PHP peut rajouter sa sauce, avec des directives d'initialisation ou de htaccess.
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 ?
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
Le 09/10/2011 11:33, Dominique Ottello a écrit :
Bonjour,
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();
Déjà le serveur qui fournit le fichier traité par PHP peut rajouter sa
sauce, avec des directives d'initialisation ou de htaccess.
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 ?
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.
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();
Déjà le serveur qui fournit le fichier traité par PHP peut rajouter sa sauce, avec des directives d'initialisation ou de htaccess.
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 ?
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
Dominique Ottello
Pascal Poncet écrivait :
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.
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');
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: '. gmdate('D, d M Y H:i:s', time() + $offset).' GMT');
Bonjour,
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');
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: '.
gmdate('D, d M Y H:i:s', time() + $offset).' GMT');
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');
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: '. gmdate('D, d M Y H:i:s', time() + $offset).' GMT');
Dominique Ottello
Olivier Miakinen <om+ écrivait :
Tu peux aussi essayer de rajouter des entêtes de test :
Les entêtes de test passent toutes très bien tant en local qu'en réel chez Free :
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
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
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
Olivier Miakinen
Le 10/10/2011 17:17, Dominique Ottello a écrit :
Tu peux aussi essayer de rajouter des entêtes de test :
Les entêtes de test passent toutes très bien tant en local qu'en réel chez Free :
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
Le 10/10/2011 17:17, Dominique Ottello a écrit :
Tu peux aussi essayer de rajouter des entêtes de test :
Les entêtes de test passent toutes très bien tant en local qu'en réel
chez Free :
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.
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
Pascal Poncet
Le 09/10/2011 16:32, Dominique Ottello a écrit :
A priori (À moins que ce soit à mon insu), je ne passe pas par un proxy.
Et tu sembles avoir testé en local avec le même résultat, si j'ai bien suivi.
Je ne suis pas très à l'aise avec les paramétrages de cache un peu complexes, mais n'y a-t-il pas une contradiction, ou un chevauchement possible, entre ces deux directives :
Chez moi en local, avec l'extension Firebug, je vois une différence entre la réponse du serveur et la lecture du cache, lorsque j'envoie des paramètres identiques aux tiens.
- Expires Thu Oct 13 2011 18:11:38 GMT+0200 (CEST)
Bon, je ne sais si c'est une bonne piste, mais en plus je ne vois pas trop l'intérêt, pour servir des pages dynamiques. Peux-tu nous éclairer ?
-- Cordialement, Pascal
Le 09/10/2011 16:32, Dominique Ottello a écrit :
A priori (À moins que ce soit à mon insu), je ne passe pas par un proxy.
Et tu sembles avoir testé en local avec le même résultat, si j'ai bien
suivi.
Je ne suis pas très à l'aise avec les paramétrages de cache un peu
complexes, mais n'y a-t-il pas une contradiction, ou un chevauchement
possible, entre ces deux directives :
Chez moi en local, avec l'extension Firebug, je vois une différence
entre la réponse du serveur et la lecture du cache, lorsque j'envoie des
paramètres identiques aux tiens.
A priori (À moins que ce soit à mon insu), je ne passe pas par un proxy.
Et tu sembles avoir testé en local avec le même résultat, si j'ai bien suivi.
Je ne suis pas très à l'aise avec les paramétrages de cache un peu complexes, mais n'y a-t-il pas une contradiction, ou un chevauchement possible, entre ces deux directives :
Chez moi en local, avec l'extension Firebug, je vois une différence entre la réponse du serveur et la lecture du cache, lorsque j'envoie des paramètres identiques aux tiens.
- Expires Thu Oct 13 2011 18:11:38 GMT+0200 (CEST)
Bon, je ne sais si c'est une bonne piste, mais en plus je ne vois pas trop l'intérêt, pour servir des pages dynamiques. Peux-tu nous éclairer ?
-- Cordialement, Pascal
Olivier Miakinen
Le 10/10/2011 18:18, Pascal Poncet a écrit :
Je ne suis pas très à l'aise avec les paramétrages de cache un peu complexes, mais n'y a-t-il pas une contradiction, ou un chevauchement possible, entre ces deux directives :
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. </>
Le 10/10/2011 18:18, Pascal Poncet a écrit :
Je ne suis pas très à l'aise avec les paramétrages de cache un peu
complexes, mais n'y a-t-il pas une contradiction, ou un chevauchement
possible, entre ces deux directives :
Je ne suis pas très à l'aise avec les paramétrages de cache un peu complexes, mais n'y a-t-il pas une contradiction, ou un chevauchement possible, entre ces deux directives :
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. </>
Dominique Ottello
Olivier Miakinen <om+ écrivait :
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 :
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
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 :
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
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 :
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