voilà, j'utilise une page d'erreur pour le code 500, mettons erreur.htm.
Lorsque je coupe ou relance Tomcat, je lance un script qui écrase le fichier en question avec soit une page default, soit une page maintenance (le principe, c'est qu'on reçoit la page 'maintenance' suite au down de Tomcat).
Le problème, c'est que pendant plusieurs minutes, je continue à recevoir comme contenu le contenu de l'ancienne page MAIS le 'date-modified' et le 'content-length' du header http sont bien à jour !!!
Exemple concret avec un scénario :
soit default.htm, contenu '12345678'
soit maintenance.htm, contenu 'abcde'
Tomcat est up, erreur.htm contient '12345678'.
Une erreur 500 donne comme Date-Modified 'hier', et Content-Length '8'.
Bien, maintenant on coupe Tomcat : cp maintenance.htm --> erreur.htm
En vérifiant, le contenu de erreur.htm est bien 'abcde'
La page d'erreur 500 renvoie alors, pendant plusieurs minutes :
Date-modified 'à l'instant'
Content-Length '5'
Mais le contenu envoyé est : '12345' !!!![]()
Dans l'autre sens, ça pose un problème (erreur dans Apache, et pas de réponse HTTP, donc page vide) ; si on suit la logique ça s'explique (Content-Length > contenu du fichier), mais le vrai problème c'est pourquoi Apache n'utilise pas la dernière version du fichier pour alimenter le contenu ???![]()
J'ai retourné le problème dans tous les sens et ça n'a pas l'air d'être un problème de config d'Apache, ni un problème de caching ou autre...![]()
[edit: clairement je penche pour le bug Apache...]
à l'aide !
Version d'Apache : 2.0.47
Partager