8
votes

Détecter si le cache d'un navigateur est plein

Nous avons identifié que les caches du navigateur complet sont la cause d'un problème sur notre extranet. Cela n'affecte qu'un petit nombre de nos utilisateurs, mais nous aimerions les alerter au problème et leur donner des conseils sur la manière de résoudre le problème pour eux-mêmes.

Nous aimerions utiliser un système similaire à celui utilisé par Gmail. Lorsqu'il détecte que la cache de votre navigateur est pleine ne se comporte pas comme elle le devrait, elle montre un message d'avertissement indiquant aux utilisateurs que leur cache est plein et qu'il peut causer des problèmes avec Gmail, ainsi qu'un lien avec une page d'aide Gmail sur effacer le cache de votre navigateur .

Est-ce que quelqu'un sait s'il y a des ressources là-bas ou des exemples d'utiliser JavaScript pour détecter que le cache du navigateur est Full se comporter mal?

Merci.


Clarification: Ce que nous essayons réellement de détecter, je suppose, n'est pas si le cache est complet, mais plutôt si un script, que nous avons configuré côté serveur à stocker. Dans le cache, est à nouveau demandé du serveur - de manière à ce que le navigateur se comporte étrangement, ou comme si son cache ne se comporte pas comme il le devrait.


Clarification supplémentaire: Merci à tous pour les mises à jour de la mise en cache. Nos scripts sont envoyés avec les en-têtes corrects et nous ne voyons que ce problème dans IE6 et IE7 - les navigateurs Mozilla et WebKit ne semblent pas être affectés - mais je ne suis toujours pas sûr de savoir comment nous allions utiliser exactement JavaScript et / ou XMLHTTPEQuRequest pour vérifier si un objet a été récupéré ou non à partir du cache, nous permettant ainsi de vérifier si le cache se comporte mal.


6 commentaires

Indépendamment, que cela soit réellement possible (j'en doute), quand un cache de navigateur est-il considéré complet, car il s'agit essentiellement d'une file d'attente où les données les plus anciennes sont supprimées, lorsque l'espace est nécessaire. Ou quand est-ce pas plein? Être non complet nécessiterait que l'utilisateur le vidait régulièrement, quelle que soit la majorité des gens ne font jamais ...


Je suis curieux de savoir comment et pourquoi vous avez déterminé que le cache complet était la question, par opposition à des données contradictoires dans le cache ou à une autre chose. Quoi qu'il en soit, si vous êtes la même personne qui a eu beaucoup d'abus sur comp.lang.javascript ( groups.google.co.uk/group/comp.lang.javascript/Browse_threa d / ... ), j'espère que vous obtiendrez un meilleur traitement sur Stackoverflow ...


Heh ... Non, ce n'était pas moi sur comp.lang.javascript. Ce que je suppose que je demande vraiment, c'est ce que Gmail fait pour détecter que le cache de votre navigateur est complet et de montrer ce message à nos utilisateurs finaux. Via votre lien et par une lecture rapide, j'ai réussi à trouver cette discussion ( groups.google.com/group/comp.lang.javascript/browse_frm/thth ead / ... ) qui explique ce qui va probablement continuer et comment le faire. Merci!


@Rotora: Je suppose que ce que nous essayons réellement de détecter, ce n'est pas si le cache est plein (comme vous, je ne suis pas sûr que ce soit réellement possible de le faire, d'où la question), mais si un script, que nous ont configuré le côté serveur à stocker dans le cache, est à nouveau demandé à partir du serveur - de manière à ce que le navigateur se comporte comme si son cache est plein.


On dirait que le cache gmail-is-complet Avertissement est uniquement affiché via HTTP. J'ai lu indiqué que le message disparaît lors de la navigation Gmail avec HTTPS. Source


Parmi les abus sur comp.lang.javascript était la réponse, comme c'est généralement le cas là-bas. Une mine d'or des informations javascript de vrais experts, entourée de beaucoup d'autres choses.


3 Réponses :


6
votes

Le cache du navigateur ne sera pas cause des problèmes si c'est plein ... avec quelques notes mineures.

  1. Si le cache du navigateur est plein, le navigateur doit simplement télécharger le contenu frais et le tirant de son cache local. (E.G. est plus lent)
  2. Si le cache de navigateur contient des données non valides (par exemple une ancienne copie d'un fichier JavaScript), alors oui, vous pouvez rencontrer des problèmes. (Pas parce que le cache est plein, mais parce que vous n'avez pas servi de fichier frais pour l'utilisateur (Google pour: expire les en-têtes et comment modifier le chemin d'URL sur vos fichiers lorsque vous effectuez des modifications de script pour vous assurer de "casser" le cache))
  3. dans Internet Explorer, lorsque vous appuyez sur un fichier de téléchargement (par exemple, une feuille de calcul Excel) à l'utilisateur, il doit entrer dans le cache pour fonctionner (un bogue IE) - je suis pas sûr de si le Le fichier est plus grand que le cache total des utilisateurs, si cela provoque des problèmes avec le fichier stocké, et donc chargé (empileurs PLS n'hésitez pas à confirmer si cela ou une autre)

    mise à jour: Sur la base de votre clarification, vous devez vous assurer que tout script que vous envoyez au client est de manière appropriée mise en cache ... ce qui signifie:


1 commentaires

Étant donné que suggérez-vous d'attendre que la page ait fini de charger et de tirer ensuite une demande asynchrone pour les (en-tête du même script que nous chargons dans la section de la page , puis vérifiez si cela a été chargé à partir du cache ou du serveur?



0
votes

Cela ne fonctionnera probablement pas tel quel. Mais c'est juste une idée: xxx


0 commentaires

-1
votes

envisagez d'envoyer un en-tête pour que votre application ne cache jamais votre contenu et de le faire expirer immédiatement.


1 commentaires

Pourquoi? C'est complètement contre ce que nous essayons de faire - nous voulons que ce contenu particulier soit le cache.