Est-il possible de contrôler avec javascript si un navigateur va sur le serveur pour une image ou dans le cache du navigateur? Puis-je forcer le navigateur à faire un appel de serveur alors qu'il utiliserait une image mise en cache? Je sais que je peux simplement ajouter une chaîne de requête à mon URL d'image, mais, si je comprends bien, cela fonctionne parce que le navigateur voit cela comme une nouvelle image. Je veux que l'ancienne image soit remplacée dans le cache.Existe-t-il une méthode côté client pour empêcher la mise en cache d'une image?
Répondre
Vous ne pouvez rien faire de pareil avec une étiquette standard img
. Vous pouvez créer une XMLHttpRequest pour l'image et définir l'en-tête if-modified-since
. Cela devrait remplacer l'ancienne image dans le cache:
var url = "http://www.mysite.com/images/myimage.png";
var xhr = new XMLHttpRequest(); // or x-browser compat function
xhr.open("GET", url, true);
xhr.setRequestHeader("If-modified-since", "Thu Jan 1 00:00:00 UTC 1970");
xhr.onreadystatechange = function()
{
if (xhr.readyState == 4 && xhr.status == 200)
document.getElementById("myImg").src = url;
}
xhr.send();
Vous pouvez utiliser des balises meta sur la page pour le cache de contrôle, réglé sur "no-cache" comme ceci:
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
et
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
Vous pouvez également définir la page « expirer » à un moment dans le passé, ce qui, en théorie, que le navigateur pour vérifier la nouvelle version:
<META HTTP-EQUIV="EXPIRES" value="some date in the past" />
Notez que "une certaine date dans le passé" doit être GMT au RFC 1123 format.
note, vous pouvez simplement les envoyer dans l'en-tête HTTP lui-même: See Here
Hope this helps.
Aussi, je vais commencer un groupe de ska-core sur le thème de la programmation appelé NO CACHE ... – MisterMister
- 1. Mise en cache de l'applet côté client?
- 2. Comment implémenter la mise en cache wcf côté client personnalisée
- 3. Désactiver la mise en cache côté client dans ASP.NET
- 4. Mise en cache côté client dans les applications Rich Internet
- 5. Empêcher la mise en cache IE
- 6. Désactiver la mise en cache DNS côté client sur Windows 7 pour un domaine
- 7. Empêcher la mise en cache d'images dans MVC 2 C#
- 8. Mise en cache de la réponse d'un serveur du gestionnaire HTTP ASP.NET et du côté client
- 9. Comment empêcher la mise en cache de requêtes asynchrones?
- 10. Désactiver la mise en cache côté serveur ASP.net
- 11. Comment empêcher la mise en cache de jQuery Ajax?
- 12. Comment puis-je désactiver la mise en cache côté client et proxy dans ASP.NET MVC?
- 13. SQLObject: Comment empêcher la mise en cache d'une classe spécifique?
- 14. Modèle pour la mise à jour côté client dans SOA
- 15. Comment activer la mise en cache côté serveur WCF?
- 16. Mise en cache des données de formulaire dans le navigateur - solution côté client
- 17. IE7 pas Mise en cache Image CSS sur SSL
- 18. Site Web multilingue - URL uniques requises pour différentes langues (pour empêcher la mise en cache)?
- 19. Comment insérer une image du côté client dans un éditeur?
- 20. .htaccess pour la compression, la mise en cache du navigateur, la mise en cache proxy, etc.
- 21. Mise en cache et conversion pendant la mise en cache
- 22. Mise en cache de fichiers côté serveur Apache via .htaccess?
- 23. Mise en cache d'un contrôle utilisateur côté serveur dans asp.net
- 24. Mise en œuvre pour la mise en cache des requêtes
- 25. La mise en cache côté serveur ne fonctionne pas avec HttpHandler
- 26. Mise en mémoire cache côté serveur pour l'application Java/Java EE
- 27. Comment empêcher Android de renvoyer une réponse mise en cache à ma demande HTTP?
- 28. Problème de mise en cache des pages Web asp.net
- 29. La méthode ArrayList.size() est-elle mise en cache?
- 30. comment rendre la méthode entité disponible côté client?
Merci la tête d'Andy E. Que faire simplement: document.getElementById ("myImg"). Src = url – morgancodes
@morgancodes: Lorsque vous définissez l'image 'src' sur une URL, elle utilise les méthodes de mise en cache par défaut du navigateur et récupère l'image actuellement mise en cache. Il n'existe aucun moyen de définir des en-têtes de requête ou d'autres options liées à HTTP lors de la demande. La méthode dans ma réponse force le navigateur à télécharger une nouvelle copie de l'image et à la conserver dans le cache, puis elle fait passer un élément d'image à cette nouvelle version en cache. –
Cool. Merci. Je vais essayer maintenant. – morgancodes