Question

J'ai essayé de nombreuses façons d'obtenir IE8 pour recharger une page, mais a échoué. IE ne cesse de l'utiliser de cache interne sans demander au serveur Web pour elle.

J'envoie les en-têtes suivants de mon serveur web:

Response.Add(new StringHeader("Expires", DateTime.UtcNow.AddYears(-1).ToString("r")));
Response.Add(new StringHeader("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0"));
Response.Add(new StringHeader("Pragma", "no-cache"));
Response.Add(new StringHeader("Last-Modified", DateTime.UtcNow.ToString("r")));

Il est juste l'une des nombreuses combinaisons que je l'ai essayé.

Comment puis-je faire IE chercher la page à chaque fois (sans forcer mes utilisateurs à désactiver le cache dans IE)?

Était-ce utile?

La solution

La bonne façon est d'envoyer ces en-têtes HTTP dans la réponse:

Pragma: no-cache
Expires: -1
Cache-Control: no-cache, no-store

En les utilisant rend le travail de tout dans IE sans autres modifications.

Autres conseils

La façon la plus simple est d'ajouter un paramètre avec un timbre de date / heure comprimé sur la chaîne de requête ... Cela en fait ressemble à une toute nouvelle page aux navigateurs.

Juste une rapide mise à jour , si vous êtes données mise en ligne sur le serveur, puis IE sautera le cache et charger les nouvelles données. Toutefois, si vous n'émettez des requêtes GET, alors IE va regarder l'URL et ses propres paramètres pour déterminer si tirer du cache ou en fait aller au serveur pour les données.

Maintenant, si l'utilisateur a « la version plus récente des pages enregistrées » ensemble à jamais, alors il n'y a rien que vous pouvez faire à court de annexant une valeur à la chaîne de requête. Voir KB263070 pour les informations détaillées de MS sur ces options. Un rapide coup d'oeil à travers des réponses Microsoft montre un grand nombre de personnes qui ont été peu à ce sujet. La solution qui est toujours donnée est pour l'utilisateur de modifier leurs paramètres de cache.

Alors, pour vous, la solution va être à (au niveau de complexité)

  1. Append une valeur de chaîne de requête très variable
  2. Informer vos utilisateurs qu'ils doivent changer le « Vérifiez les versions les plus récentes » réglage soit chaque visite de la page ou automatiquement.
  3. Modifier vos liens pour provoquer dos de poste. (Yuck)

Un certain nombre d'applications choisir soit le point 2 ou un élément 1. La raison étant que 2 a un impact minimal sur la base de code alors que l'article 1 a le moins d'impact sur vos utilisateurs.

Si c'est un site d'administration, alors je dirais aller avec l'option 2 que vous devriez avoir un montant équitable de l'effet de levier sur les paramètres de bureau des utilisateurs.

Si tout va bien, je comprends votre question, donner peut-être cette solution, cela effacera:

   List<string> keys = new List<string>();
    IDictionaryEnumerator enumerator = Cache.GetEnumerator();
    while (enumerator.MoveNext())
    {
        keys.Add(enumerator.Key.ToString());
    }

    foreach(string key in keys)
    {
        Cache.Remove(key);
    }

si cela doit être sur plusieurs pages, vous pouvez le mettre dans une page principale (ou utilisez un autre refactoring).

Il y a aussi la directive OutputCache, si ce qui précède est pas ce que vous cherchez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top