2009-08-13 3 views
8

Existe-t-il un moyen de créer un lien vers une URL qui force le navigateur à ignorer le cache qu'il peut avoir pour cette URL?Lien HTML qui force l'actualisation?

Nous avons quelques sites Web qui ont récemment changé après littéralement des années de contenu statique. Les utilisateurs cliquent sur les raccourcis, les favoris ou saisissent des URL sur ces sites et récupèrent du contenu ancien mis en cache. Je voudrais avoir une page avec un lien qui va à la même URL, mais oblige le navigateur à obtenir le nouveau contenu.

est-ce possible? Cross-navigateur?

Répondre

10
  1. Modifier tous les liens vers la page avec un paramètre de requête de non-sens:? Products.html heureux = jours
  2. changer toutes les ressources sur la page pour utiliser un autre paramètre requête non-sens: style.css = le Fonz

Vous pouvez le faire de manière systématique en utilisant des dates ou des horodatages ou des numéros de version, ou au hasard en utilisant des sitcoms, des muppets, des chaînes de montagnes et de petits mammifères.

+0

Connaissez-vous un moyen de former une URL qui oblige les raccourcis à rafraîchir? Par exemple, je vois comment www.abc.com/?happy=days serait un contenu frais mais si j'avais un raccourci vers www.abc.com, serait-il rafraîchi aussi? – n8wrl

+0

Tom, dites-vous qu'il faudrait faire ces deux choses ou juste l'une d'entre elles? –

+2

Je me rends compte que c'est vieux, mais +1 pour les suggestions de paramètres. –

4

Ajouter un paramètre d'URL à la fin de la href avec une valeur unique, par exemple new Date() getTime():.

...somePage.html?time=123456789 
0

Beaucoup de gens utilisent un paramètre de chaîne de requête de version.

Vérifiez la source SO

<script type="text/javascript" src="http://sstatic.net/so/js/master.js?v=4143"></script> 

remarque précisément les master.js? V = 4143

Personnellement, je mis dans mon fichier de configuration qui est une application large, mais je crois que vous pouvez le faire correctement dans votre contrôle de source si vous avez besoin d'un versioning plus granulaire.

2

Lorsque j'ai besoin d'un rafraîchissement complet de la page, j'ajoute simplement ?v= suivi d'une chaîne de caractères aléatoire. Lorsqu'un navigateur détecte une chaîne de requête après une page, il contourne automatiquement le cache (si la même chaîne de requête n'est pas présente dans la version en cache), car le contenu de la page peut changer en fonction de la valeur de la chaîne de requête.

Depuis une page web peut être rechargée plus qu'une fois par seconde, j'utilise l'horodatage UNIX en cours suivi d'une lettre et un nombre aléatoire entre 1 et 1000.

Les chances que deux pages obtiennent exactement la même requête chaîne sont proches de null.

0

lien HTML avec javascript forces rafraîchissent: