Vous pouvez le faire de plusieurs façons. Premièrement, il suffit d'ajouter cette balise méta à votre site Web. head
:
<meta http-equiv="Cache-control" content="no-cache">
Si vous voulez supprimer le document du cache, expires
devrait permettre de le supprimer en définissant son paramètre content
à l'attribut -1
comme ça :
<meta http-equiv="Expires" content="-1">
http://www.metatags.org/meta_http_equiv_cache_control
De plus, IE devrait vous donner le dernier contenu de la page principale. Si vous rencontrez des problèmes avec des documents externes, comme les CSS et les JS, ajoutez un paramètre fictif à la fin de vos URL avec l'heure actuelle en millisecondes afin qu'elle ne soit jamais la même. De cette façon, IE, et les autres navigateurs, pourront toujours vous servir la dernière version. Voici un exemple :
<script src="mysite.com/js/myscript.js?12345">
MISE À JOUR 1
Après avoir lu les commentaires, j'ai compris que vous vouliez effacer le cache de façon programmatique et non pas à chaque fois. Ce que vous pourriez faire est d'avoir une fonction en JS comme :
eraseCache(){
window.location = window.location.href+'?eraseCache=true';
}
Ensuite, en PHP, disons, vous faites quelque chose comme ceci :
<head>
<?php
if (isset($_GET['eraseCache'])) {
echo '<meta http-equiv="Cache-control" content="no-cache">';
echo '<meta http-equiv="Expires" content="-1">';
$cache = '?' . time();
}
?>
<!-- ... other head HTML -->
<script src="mysite.com/js/script.js<?= $cache ?>"
</head>
Ceci n'a pas été testé, mais devrait fonctionner. En gros, votre fonction JS, si elle est invoquée, recharge la page, mais ajoute un paramètre GET à la fin de l'URL. Votre site devrait alors avoir un code back-end qui recherche ce paramètre. S'il existe, il ajoute les métabalises et une variable de cache qui contient un horodatage et l'ajoute aux scripts et CSS avec lesquels vous avez des problèmes de cache.
MISE À JOUR 2
La balise méta n'efface pas le cache. au chargement de la page . Donc, techniquement, vous devriez exécuter la fonction eraseCache en JS, une fois la page chargée, vous devriez la charger à nouveau pour que les changements aient lieu. Vous devriez être en mesure de résoudre ce problème avec votre langage côté serveur. Vous pourriez exécuter le même effacerCache JS, mais au lieu d'ajouter les métabalises, vous devez ajouter les en-têtes HTTP Cache :
<?php
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
?>
<!-- Here you'd start your page... -->
Cette méthode fonctionne immédiatement, sans qu'il soit nécessaire de recharger la page, car elle efface le cache avant le chargement de la page et avant toute exécution.
6 votes
Des choses horribles peuvent se produire lorsque les utilisateurs sont assis derrière des proxies. Pour être sûr que la page se recharge, il suffit d'ajouter une valeur aléatoire à votre url.
1 votes
window.location.href = window.location.href
0 votes
1)J'ai enregistré une page HTML avec une DIV - MainDIV avec de nombreuses DIVS à l'intérieur. 2) Lorsque j'assigne du HTML à cette DIV, comment puis-je effacer ce qui se trouve dans la DIV et assigner la valeur de la DIV sauvegardée ? 3) Avez-vous une idée sur la façon de résoudre ce problème ?