370 Stimmen

Browser zum Löschen des Cache zwingen

Gibt es eine Möglichkeit, einen Code auf meiner Seite zu platzieren, so dass beim Besuch einer Website der Browser-Cache gelöscht wird, damit die Änderungen angezeigt werden können?

Verwendete Sprachen: ASP.NET, VB.NET, und natürlich HTML, CSS und jQuery.

15voto

Para statische Ressourcen richtiges Caching wäre, wenn Abfrageparameter verwenden mit dem Wert der jeweiligen Bereitstellung oder Dateiversion. Dies hat zur Folge, dass der Cache nach jeder Bereitstellung geleert wird.

/Content/css/Site.css?version={FileVersionNumber}

Hier ein Beispiel für ASP.NET MVC.

<link href="@Url.Content("~/Content/Css/Reset.css")?version=@this.GetType().Assembly.GetName().Version" rel="stylesheet" type="text/css" />

Vergessen Sie nicht, die Montageversion zu aktualisieren.

8voto

zeeshan Punkte 4535

Ich hatte einen Fall, in dem ich Fotos von Kunden online gemacht habe und den Bereich aktualisieren musste, wenn ein Foto geändert wurde. Im Browser wurde immer noch das alte Foto angezeigt. Also benutzte ich den Hack, eine zufällige GET-Variable aufzurufen, die jedes Mal eindeutig ist. Hier ist es, wenn es jemandem helfen könnte

<img src="/photos/userid_73.jpg?random=<?php echo rand() ?>" ...

EDIT Wie bereits von anderen erwähnt, ist die folgende Lösung viel effizienter, da sie Bilder nur dann neu lädt, wenn sie geändert werden, wobei diese Änderung anhand der Dateigröße erkannt wird:

<img src="/photos/userid_73.jpg?modified=<? filemtime("/photos/userid_73.jpg")?>"

6voto

John Punkte 49

Viele Antworten gehen am Thema vorbei - die meisten Entwickler wissen sehr wohl, dass das Ausschalten des Cache ineffizient ist. Es gibt jedoch viele häufige Situationen, in denen Effizienz unwichtig ist und das Standard-Cache-Verhalten schlecht funktioniert.

Dazu gehören verschachtelte, sich wiederholende Skripttests (das große Problem!) und fehlerhafte Software von Drittanbietern. Keine der hier vorgestellten Lösungen reicht aus, um solche häufigen Szenarien anzugehen. Die meisten Webbrowser nutzen die Zwischenspeicherung viel zu aggressiv und bieten keine sinnvolle Möglichkeit, diese Probleme zu vermeiden.

5voto

nPcomp Punkte 6837

Wenn ich die URL wie folgt ändere, funktioniert es:

/custom.js?id=1

Durch Hinzufügen einer eindeutigen Nummer nach ?id= und bei neuen Änderungen inkrementiert wird, müssen die Benutzer nicht die Taste CTRL + F5 um den Cache zu aktualisieren. Alternativ können Sie eine Hash- oder String-Version der aktuellen Zeit oder Epoche anhängen nach ?id=

Etwas wie ?id=1520606295

2voto

S Pangborn Punkte 12363
<meta http-equiv="pragma" content="no-cache" />

Siehe auch https://stackoverflow.com/questions/126772/how-to-force-a-web-browser-not-to-cache-images

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X