Page 1 sur 1

xmlhttprequest et cache http

Publié : 04 sept. 2008, 16:53
par Bobe
Salut,

J’ai un autre soucis avec XMLHttpRequest().

Je récupère un fichier xml envoyé à l’aide d’un script php. J’envoie les deux entêtes HTTP suivants avec le fichier:

Code : Tout sélectionner

header('Expires: '.gmdate(DATE_RFC1123, time() + 600));
header('Cache-Control: private, max-age=600');
header('Pragma: private');
Ça marche bien, le navigateur met le xml en cache et celui-ci n’est plus redemandé avant 10 minutes.

Le problème est que ça marche trop bien.
  • Si je fais "ctrl + r", le navigateur est censé redemander la ressource, éventuellement en précisant les entêtes qui vont bien pour savoir si la ressource est expirée, genre "if-modified-since" (pas le cas ici vu que je n’ai pas servi la ressource en donnant d’entête "last-modified")
  • Si je fais "ctrl + maj + r", le navigateur est censé ignorer son cache et redemander la ressource en donnant l’entête "cache-control: no-cache" pour être sûr que le serveur lui renvoie la ressource sans faire de négociation au niveau du cache
Ce fonctionnement est standard et conforme aux normes HTTP et c’est bien celui qu’on constate pour les ressources dites "classiques" d’une page (feuilles de styles, scripts, images, ...).
Et bien dans le cas de mon fichier XML, il refuse obstinément de redemander la ressource tant que le délai d’expiration, de 10 minutes dans mon cas, n’est pas atteint !

Quelqu’un a t-il été déjà confronté à ce problème ?

Publié : 04 sept. 2008, 19:57
par Benoit
Pas particulièrement, mais ça ne m'étonne pas du tout qu'une requête XMLHttpRequest ne soit pas considérée comme une ressource classique de la page, vu qu'elle n'y est pas référencée directement.

Publié : 05 sept. 2008, 00:42
par Bobe
Je suis pas d’accord. Dans les deux cas, la fonction enregistrée sur le 'load' de la page est bien appelée et c’est dans celle-ci que je fais mon appel ajax.
À partir de là, firefox devrait se comporter comme pour tout autre ressource, c’est incompréhensible :/