Je travaille sur un chargeur google maps (en utilisant l'API google maps javascript). Je veux ajouter dynamiquement des points à un chemin au fur et à mesure qu'ils sont disponibles. Modifier: La page Web et le javascript sont stockés et chargés localement et non via un serveur Web. À cette fin, j'ai créé un fichier javascript externe dans lequel je mets les données que je veux utiliser.Imposer un javascript chargé dynamiquement pour ne pas mettre en cache sur google chrome
je charge l'objet java script en utilisant un truc que je trouve nulle part ailleurs sur stackoverflow:
function loadjsfile(filename, callback)
{
var fileref = document.createElement('script');
fileref.setAttribute("type", "text/javascript");
fileref.setAttribute("src", filename);
var done = false;
fileref.onload = fileref.onreadystatechange = function()
{
if(!done && (!this.readyState
|| this.readyState == "loaded"
|| this.readyState == "complete"))
{
done = true;
// Continue your code
callback();
// Handle memory leak in IE
fileref.onload = fileref.onreadystatechange = null;
document.getElementsByTagName("script")[0].removeChild(fileref);
}
};
document.getElementsByTagName("script")[0].appendChild(fileref);
}
Cela fonctionne parfaitement comme il attend que le javascript externe a effectivement chargé avant de procéder à l'intialisation.
Donc, c'est génial, ça se charge très bien. Je définis ensuite un délai de 5 secondes qui recharge le fichier javascript externe. C'est là que j'ai un problème. Google Chrome est en train de recharger le fichier javascript externe à partir du cache au lieu d'aller directement sur le disque. C'est une énorme douleur car cela signifie que mon chemin de carte ne se met pas à jour au fur et à mesure. J'en ai vraiment besoin.
Lorsque j'ai rafraîchi toute la page, il était correct de recharger le javascript mais le scintillement était très ennuyeux (et il a forcé la carte à revenir à l'état "initial"). Cette nouvelle méthode fonctionnerait parfaitement à condition que je puisse le forcer à recharger le fichier javascript à chaque fois.
Donc, quelqu'un peut-il m'aider?
Je suis très nouveau Javascript (je suis principalement un codeur C++) donc des excuses si je demande quelque chose de stupide: D
Sweet qui semble fonctionner. Pouvez-vous expliquer pourquoi cela fonctionne bien?Si je comprends bien, il envoie une requête au javascript mais je ne comprends pas pourquoi cela forcerait un rechargement. – Goz
Parce que le navigateur pense qu'il s'agit d'un fichier différent, c'est-à-dire une page générée dynamiquement en raison de la modification de l'URL. Je ne suis pas sûr si le navigateur essayera et mettra en cache chaque *** random * url **, mais cela pourrait valoir un test avec un échantillon plus petit. – Marko
Ok, je pense que je comprends. En tant que requête envoyée au navigateur, le navigateur n'a aucune idée de ce que le serveur retournera exactement. Par conséquent, il ne peut pas éventuellement utiliser une version mise en cache car la requête peut renvoyer quelque chose de complètement différent. La chaîne de requête est simplement ignorer cependant parce que ce que le navigateur Web ne sait pas, c'est que je ne fais rien de si compliqué. Est-ce correct? – Goz