xmlhttprequest et cache http

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
Bobe
Iguane
Messages : 742
Inscription : 28 juil. 2003, 21:29

xmlhttprequest et cache http

Message 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 ?
« La vie d’un geek est un combat perpétuel contre l’imperfection »
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message 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.
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
Bobe
Iguane
Messages : 742
Inscription : 28 juil. 2003, 21:29

Message 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 :/
« La vie d’un geek est un combat perpétuel contre l’imperfection »
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 4 invités