OVH Cloud OVH Cloud

XMLHTTPRequest et fichiers en cache ?

2 réponses
Avatar
Vincent Nabet
Bonjour,

Je dois développer un script permettant de charger régulièrement un
fichier de données xml. La solution adoptée est celle de l'objet
XMLHTTPRequest.

- Le fichier XML chargé n'est pas généré dynamiquement. Il s'agit d'un
fichier en .xml qui est en fait crée par un robot externe et poussé
régulièrement par ftp sur le serveur HTTP

Afin d'éviter que le navigateur ne garde le fichier en cache j'ai essayé
2 solutions:

--- Ajout d'un paramètre timestamp en GET sur l'url d'appel
...
var uniq = new Date();
uniq = "uniq="+uniq.getTime();
MonXMLHTTPRequest.open("GET", "fichierxml?" + uniq, true);
...

--- Ecriture de l'entête de telle sorte que le fichier soit
automatiquement rechargé
...
MonXMLHTTPRequest.open("GET", "fichierxml", true);

MonXMLHTTPRequest.setRequestHeader("Cache-Control", "no-store, no-cache,
must-revalidate, post-check=0, pre-check=0");
MonXMLHTTPRequest.setRequestHeader("Pragma", "no-cache");
MonXMLHTTPRequest.setRequestHeader("Expires", "Wed, 09 Aug 2000 08:21:57
GMT");
...

Une fois la reqûete résolue:
- La proprieté MonXMLHTTPRequest.responseText me renvoi bien des données
à jour à chaque rechargement
- En revanche, à mon grand désespoir, La proprieté
MonXMLHTTPRequest.responseXML ne me renvoi pas les mise à jour mais le
premier jeu de donné chargé, à moins que je ne recharge la page (ce qui
n'est pas le but du xmlhttprequest ;))

Comment me sortir de ce problème et obtenir un responseXML à jour ne
venant pas du cache.

Merci d'avance
Vincent

2 réponses

Avatar
Cenekemoi
Bonjour,

Je dois développer un script permettant de charger régulièrement un
fichier de données xml. La solution adoptée est celle de l'objet
XMLHTTPRequest.

- Le fichier XML chargé n'est pas généré dynamiquement. Il s'agit d'un
fichier en .xml qui est en fait crée par un robot externe et poussé
régulièrement par ftp sur le serveur HTTP

Afin d'éviter que le navigateur ne garde le fichier en cache j'ai
essayé 2 solutions:

--- Ajout d'un paramètre timestamp en GET sur l'url d'appel
...
var uniq = new Date();
uniq = "uniq="+uniq.getTime();
MonXMLHTTPRequest.open("GET", "fichierxml?" + uniq, true);
...

--- Ecriture de l'entête de telle sorte que le fichier soit
automatiquement rechargé
...
MonXMLHTTPRequest.open("GET", "fichierxml", true);

MonXMLHTTPRequest.setRequestHeader("Cache-Control", "no-store,
no-cache, must-revalidate, post-check=0, pre-check=0");
MonXMLHTTPRequest.setRequestHeader("Pragma", "no-cache");
MonXMLHTTPRequest.setRequestHeader("Expires", "Wed, 09 Aug 2000
08:21:57 GMT");
...

Une fois la reqûete résolue:
- La proprieté MonXMLHTTPRequest.responseText me renvoi bien des
données à jour à chaque rechargement
- En revanche, à mon grand désespoir, La proprieté
MonXMLHTTPRequest.responseXML ne me renvoi pas les mise à jour mais le
premier jeu de donné chargé, à moins que je ne recharge la page (ce
qui n'est pas le but du xmlhttprequest ;))

Comment me sortir de ce problème et obtenir un responseXML à jour ne
venant pas du cache.

Merci d'avance
Vincent


Intéressant...

Quel est ton navigateur, STP ?
Quel est ton serveur (logiciel, machine,...) ?

--
Cordialement, Thierry ;-)

Avatar
Vincent Nabet

Bonjour,

Je dois développer un script permettant de charger régulièrement un
fichier de données xml. La solution adoptée est celle de l'objet
XMLHTTPRequest.

- Le fichier XML chargé n'est pas généré dynamiquement. Il s'agit d'un
fichier en .xml qui est en fait crée par un robot externe et poussé
régulièrement par ftp sur le serveur HTTP

Afin d'éviter que le navigateur ne garde le fichier en cache j'ai
essayé 2 solutions:

--- Ajout d'un paramètre timestamp en GET sur l'url d'appel
...
var uniq = new Date();
uniq = "uniq="+uniq.getTime();
MonXMLHTTPRequest.open("GET", "fichierxml?" + uniq, true);
...

--- Ecriture de l'entête de telle sorte que le fichier soit
automatiquement rechargé
...
MonXMLHTTPRequest.open("GET", "fichierxml", true);

MonXMLHTTPRequest.setRequestHeader("Cache-Control", "no-store,
no-cache, must-revalidate, post-check=0, pre-check=0");
MonXMLHTTPRequest.setRequestHeader("Pragma", "no-cache");
MonXMLHTTPRequest.setRequestHeader("Expires", "Wed, 09 Aug 2000
08:21:57 GMT");
...

Une fois la reqûete résolue:
- La proprieté MonXMLHTTPRequest.responseText me renvoi bien des
données à jour à chaque rechargement
- En revanche, à mon grand désespoir, La proprieté
MonXMLHTTPRequest.responseXML ne me renvoi pas les mise à jour mais le
premier jeu de donné chargé, à moins que je ne recharge la page (ce
qui n'est pas le but du xmlhttprequest ;))

Comment me sortir de ce problème et obtenir un responseXML à jour ne
venant pas du cache.

Merci d'avance
Vincent



Intéressant...

Quel est ton navigateur, STP ?
Quel est ton serveur (logiciel, machine,...) ?



Sujet clos !
J'ai cherché longtemps mais c'était ma fonction de lecture du DOM XML
qui gardait l'ancien résultat.
Le problème ne venait donc pas de l'objet XMLHTTPRequest

Autant pour moi

Vincenet