2009-12-14 5 views
2

Dans IE en utilisant Javascript, est-il un moyen de savoir si faire un GET régulier sur une URL en utilisant XmlHttpRequest va tirer ses données du cache ou frapper le serveur?Est-il possible de tester si XmlHttpRequest va frapper le cache au lieu du serveur?

S'il n'y a aucun moyen de savoir à l'avance, est-il possible de dire à XmlHttpRequest de ne PAS toucher le serveur, et de tirer du cache si possible?

Pour clarifier: Je comprends comment fonctionne la mise en cache du navigateur, j'essaie de comprendre si je peux utiliser javascript pour déterminer à l'avance si un appel ajax va utiliser le cache des navigateurs. Dans mon cas, j'écris une bibliothèque JS, donc je ne contrôle pas le comportement du serveur, donc je suis très limité en termes de connaissance des paramètres/en-têtes du cache.

+0

Si le cache se trouve dans le cache, vous n'avez pas besoin d'indiquer au navigateur de le faire. Maintenant, l'inverse est souvent désiré: même si c'est dans le cache, parfois vous voulez qu'il soit récupéré frais du serveur. IOW: Je n'ai pas votre question. –

+0

Le problème pour moi est: Je dois * savoir * qu'il sera extrait du cache. Je fournis une bibliothèque JS tierce qui aimerait lire le fichier response.text sans invoquer un appel contre le serveur, ce qui peut avoir des effets secondaires. La seule façon que je peux obtenir à response.text est de faire une fausse requête ajax si je sais avec certitude qu'elle ne dépassera pas le cache. – Aaron

Répondre

1

En réalité, ce sont les agents d'utilisateur HTTP décents qui le font par défaut: ils ne sont récupérés du serveur que s'il n'y a pas d'entrée de cache valide pour l'emplacement demandé. Donc, votre meilleur choix pour contrôler (ou au moins comprendre) le comportement de la mise en cache est de regarder les en-têtes de cache HTTP que le serveur web renvoie pour l'emplacement que vous demandez dans votre script.

+0

Je fournis une librairie JS tierce qui doit être exécutée sur response.text sans toucher le serveur (je veux éviter les effets secondaires car ce n'est pas mon serveur/application). Pour ce faire, je ferais un appel Ajax "fictif" si je suis sûr qu'il ne sera pas passé le cache. Donc, la question demeure, est-il possible de savoir si le navigateur a une URL dans le cache, et l'utilisera? Sinon, mon code ne doit pas effectuer l'appel ajax au nom de la page hôte. – Aaron

+0

En outre, je suis nouveau à StackOverflow, mais je soupçonne que parce que cette réponse a une mise à jour, je suis beaucoup moins susceptible d'obtenir plus de globes oculaires. Y a-t-il une chance que vous puissiez voter en bas dans ma quête pour voir si cela peut être déterminé via JS? :) – Aaron

+0

Je ne connais pas d'API qui vous permet de déterminer ce que le navigateur a mis en cache, désolé. Tant que vous n'approuvez pas ma réponse comme étant celle que vous considérez la meilleure, votre question continuera d'être listée dans "Sans réponse". Je ne pense pas que cela fasse une grande différence, puisque votre question est déjà en bas de la liste. –

0

Il me semble que vous ne pouvez jamais savoir avec certitude si quelque chose est en cache, car même si c'est à un moment donné, il peut être invalidé immédiatement après. Ce que vous pouvez faire est de forcer le navigateur à frapper le serveur en ajoutant un paramètre querystring aléatoire à votre demande.

Questions connexes