06-08-2012, 03:15 PM
Il n'y a pas de réelle façon de savoir via JavaScript si un fichier est dans le cache d'un navigateur.
Soit tu te bases sur le temps de chargement d'une ressource, mettons 25 millisecondes, pour savoir si elle est chargée localement mais tu auras 2 problèmes :
Soit tu te bases sur les entêtes HTTP d'une requête d'une ressource. Le seul problème, c'est qu'à l'heure actuelle, je n'ai pas trouvé de moyen de traiter ces informations via un objet XMLHttpRequest. Par exemple, une requête pour une ressource en cache aura un status 304 Not Modified.
On peut envisager également que tu trouves la variable Cache-Control dans l'entête HTTP. Elle peut te renseigner sur la durée de vie du fichier dans le cache (eg. max-age=0) de ton navigateur. Toutes les informations sur Cache-Control sont sur le site du W3C : http://www.w3.org/Protocols/rfc2616/rfc2...ml#sec14.9. Tu verras que tu peux avoir beaucoup plus d'informations concernant la gestion d'une ressource via le cache de ton navigateur.
Sauf erreur de ma part, par défaut, les ressources JavaScript sont stockées dans le cache du navigateur. Toutefois, une requête non cachée ira chercher les ressources dont elle a besoin sur le serveur.
Au final, je ne pense pas qu'on soit en mesure de te fournir une vraie réponse. J'aurai pensé que les requêtes faites via l'objet HMLHttpRequest serait soumises au cache du navigateur, ce que je crois est bel et bien le cas, mais tu auras toujours un status valant 200. Donc inutile pour ce que tu demandes.
Bref.
Désolé…
Soit tu te bases sur le temps de chargement d'une ressource, mettons 25 millisecondes, pour savoir si elle est chargée localement mais tu auras 2 problèmes :
- Une ressource externe peut être chargée dans ce labs de temps;
- Une ressource interne peut dépasser le seuil prédéfini;
Soit tu te bases sur les entêtes HTTP d'une requête d'une ressource. Le seul problème, c'est qu'à l'heure actuelle, je n'ai pas trouvé de moyen de traiter ces informations via un objet XMLHttpRequest. Par exemple, une requête pour une ressource en cache aura un status 304 Not Modified.
On peut envisager également que tu trouves la variable Cache-Control dans l'entête HTTP. Elle peut te renseigner sur la durée de vie du fichier dans le cache (eg. max-age=0) de ton navigateur. Toutes les informations sur Cache-Control sont sur le site du W3C : http://www.w3.org/Protocols/rfc2616/rfc2...ml#sec14.9. Tu verras que tu peux avoir beaucoup plus d'informations concernant la gestion d'une ressource via le cache de ton navigateur.
Sauf erreur de ma part, par défaut, les ressources JavaScript sont stockées dans le cache du navigateur. Toutefois, une requête non cachée ira chercher les ressources dont elle a besoin sur le serveur.
Au final, je ne pense pas qu'on soit en mesure de te fournir une vraie réponse. J'aurai pensé que les requêtes faites via l'objet HMLHttpRequest serait soumises au cache du navigateur, ce que je crois est bel et bien le cas, mais tu auras toujours un status valant 200. Donc inutile pour ce que tu demandes.
Bref.
Désolé…