Wie deaktiviere ich das Caching in Firefox?

143

Während der Entwicklung muss ich den Cache in Firefox ständig "leeren", damit es die neueste Version von JavaScript-Dateien verwendet.

Gibt es eine Einstellung (about: config), um das Caching für JavaScript-Dateien vollständig zu deaktivieren? Oder, wenn nicht, für alle Dateien?

Thilo
quelle

Antworten:

229

Geben Sie "about: config" in die Firefox-Adressleiste ein und legen Sie Folgendes fest:

browser.cache.disk.enable = false
browser.cache.memory.enable = false

Wenn Sie lokal entwickeln oder das neue Manifestattribut von HTML5 verwenden, müssen Sie möglicherweise auch Folgendes festlegen: config -

browser.cache.offline.enable = false
tst
quelle
Woher wusste ich nichts über dieses kleine Juwel? Alle Arten von Leckereien in about: config!
ABrowne
2
network.http.use-cache ist nicht für mich da. Das Ändern von browser.cache.offline.enable macht für mich keinen Unterschied.
Curtis
1
Ich bezweifle nicht, dass dies eine gute Antwort ist, aber es scheint in den neuesten Firefox-Builds nicht mehr zu stimmen (ich verwende derzeit die Developer Edition 47.0a2). Das Deaktivieren des Caching in den Webentwicklereinstellungen ist für mich jedoch effektiv.
JosephStyons
61

Die Webentwickler-Symbolleiste bietet eine Option zum Deaktivieren des Caching, wodurch es sehr einfach ist, es bei Bedarf ein- und auszuschalten.

Philnash
quelle
1
STRG-F5 oder das Gedrückthalten der Umschalttaste beim Klicken auf die Schaltfläche Neu laden ist das, was ich in der Vergangenheit getan habe, aber die Funktion "Cache deaktivieren" der Web Developer Toolbar ist eine großartige Möglichkeit, dies zu tun. Sie müssen den Cache von Firefox auf diese Weise nicht vollständig deaktivieren.
Jon Onstott
1
Sie sollten jedoch daran denken, den Cache nach dem Testen zu aktivieren. ;)
Neurolabs
1
@Shanimal, es funktioniert für mich in 14.0.1, vielleicht möchten Sie deinstallieren / neu installieren oder so.
Lucas
@ Lucas doh! Die Elemente auf dem Server, mit dem ich gearbeitet habe, wurden zwischengespeichert, aber ich habe vergessen, meinen Kommentar zu löschen ... Danke.
Shanimal
1
Dies funktioniert nicht mehr, bis chrispederick einige neue Firefox-Änderungen in der neuesten Version behoben hat. Ich würde mich für die about: config-Lösung entscheiden, die für Entwickler besser ist.
Ligemer
12

Haben Sie zu verwenden versucht CTRL- F5die Seite zu aktualisieren?

etwas
quelle
6
Ich habe wirklich Zweifel, dass dies zuverlässig funktioniert, zumindest in Gegenwart von Iframes und Framesets.
Thilo
2
Richtig, es wird nicht immer das JS / CSS in einem Iframe neu laden, aber in Firefox können Sie diesen Frame zumindest in eine neue Registerkarte einfügen und dort neu laden.
Scunliffe
Ich habe immer Strg-F5 verwendet ... dann stellte ich fest, dass meine neuesten Versionen von JS-Dateien, in denen ich arbeitete, nicht geladen wurden :( War auch in einem Iframe (ich weiß, Iframes sind der Teufel, nicht meine Wahl ).
Gromer
Strg-F5 setzt das Caching von Javascript-Dateien nicht zurück. Was es (meistens) tut, ist, Ihre Sitzung und Cookies zu löschen, aber nicht das zwischengespeicherte Javascript und die Stylesheets
AceMark
10

Es gibt keine spezielle Option, um das Caching nur für JavaScript zu deaktivieren. Sie müssen das Caching vollständig deaktivieren.

FireBug bietet eine Option zum Deaktivieren des Browser-Cache im Dropdown-Menü der Registerkarte "Netzwerk".

kynan
quelle
8

Auf derselben Seite, auf der Sie das Caching deaktivieren möchten, gehen Sie wie folgt vor: Zu Ihrer Information: Die Version, an der ich arbeite, ist 30.0

Sie können :

Öffnen Sie die Webentwickler-Symbolleiste Webentwickler öffnen

und wählen Sie Cache deaktivieren

Danach wird die Seite von selbst neu geladen (Sie sind eingeschaltet) und alles wird erneut zwischengespeichert, und jede weitere Anfrage wird jedes Mal erneut gespeichert. Sie können den Webentwickler immer offen halten, um ein Auge zu behalten und sicherzustellen, dass sie immer aktiviert ist (überprüfen). .

shareef
quelle
8

Firefox 48-Entwicklertools

Ermöglicht das Deaktivieren des Cache nur, wenn die Toolbox geöffnet ist. Dies ist ideal für die Webentwicklung:

  • F12
  • Getriebe in der rechten oberen Ecke
  • nach oben scrollen Erweiterte Einstellungen
  • Aktivieren Sie "Cache deaktivieren (wenn die Toolbox geöffnet ist)".

Geben Sie hier die Bildbeschreibung ein

https://stackoverflow.com/a/27397425/895245 hat einen ähnlichen Inhalt, aber die Positionierung hat sich seitdem etwas geändert.

Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
quelle
1
Danke ... es gibt Informationen da draußen (und in diesem Thread) über das Setzen von network.http.use-cache auf false ... aber in meiner Version von FF (53) existiert diese Einstellung nicht mehr ... Diese Technik ist weit überlegen wie auch immer.
Mike Nagetier
7

Wenn Sie mit serverseitigem Code arbeiten, können Sie eine Zufallszahl generieren und diese auf folgende Weise an das Ende des src anhängen ...

src = "yourJavascriptFile.js? randomNumber = 434534"

wobei die randomNumber jedes Mal zufällig generiert wird.

RekrowYnapmoc
quelle
Dies ist die einzige Lösung, die für mich funktioniert hat, abgesehen davon, dass der Browser-Cache bei jeder Aktualisierung manuell gelöscht wird.
Curtis
4

Ich weiß, dass ich eine alte Frage wiederbelebe, aber ich habe heute versucht, dieses Problem zu lösen und eine alternative Lösung zu finden. Das Umschalten des Caching, wenn ich testen möchte, war für mich nicht wirklich akzeptabel, und wie andere bereits erwähnt haben, funktioniert die harte Aktualisierung (Strg + Umschalt + R) nicht immer.

Stattdessen habe ich mich dafür entschieden, Folgendes in meine vhost.conf-Datei (kann auch in .htaccess ausgeführt werden) in meiner Entwicklungsumgebung einzufügen:

<FilesMatch "\.(js|css)$">
FileETag None
<IfModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</IfModule>
</FilesMatch>

In meiner Entwicklungsumgebung stellt dies sicher, dass js und css immer abgerufen werden. Außerdem wirkt es sich nicht auf den Rest meines Browsings aus und funktioniert auch für alle Browser, sodass das Testen in Chrome / dh usw. ebenfalls einfach ist.

Wir haben das Snippet hier gefunden, einige andere nützliche Apache-Tricks: http://www.askapache.com/htaccess/using-http-headers-with-htaccess.html#prevent-caching-with-htaccess

Um sicherzustellen, dass meine Kunden immer die neueste Version in der Produktion sehen, erhöhen wir die Abfragezeichenfolge auf dem js-Include bei jedem Update, d. H.

jquery.somefile.js?v=0.5

Dies zwingt die Browser meiner Clients, ihren lokalen Cache zu aktualisieren, wenn sie einen neuen Querystring sehen, aber dann die neue Kopie zwischenspeichern, bis die Datei erneut aktualisiert wird

Kevin Jhangiani
quelle
3

Die beste Strategie besteht darin, Ihre Site so zu gestalten, dass eine eindeutige URL zu Ihren JS-Dateien erstellt wird, die bei jeder Änderung zurückgesetzt wird. Auf diese Weise wird es zwischengespeichert, wenn keine Änderung vorgenommen wurde, aber sofort neu geladen, wenn eine Änderung auftritt.

Sie müssten sich an Ihre spezifischen Umgebungstools anpassen. Wenn Sie jedoch PHP / Apache verwenden, ist dies eine großartige Lösung für Sie und die Endbenutzer.

http://verens.com/archives/2008/04/09/javascript-cache-problem-solved/

scunliffe
quelle
3

Sie können CTRL- verwenden F5, um den Cache unter Umgehung neu zu laden.

Sie können in Firefox festlegen, dass der Cache nicht verwendet wird

network.http.use-cache = false

Sie können Ihren Webserver so einrichten, dass er Header ohne Cache / Expires / Cache-Control für die JS-Dateien sendet.

Hier ist ein Beispiel für einen Apache-Webserver.

Klopfen
quelle
ist das Shift-F5 oder Strg-F5?
Thilo
3

Wenn Sie FireBug verwenden, können Sie im Dropdown-Menü der Registerkarte "Netzwerk" den Cache des Browsers deaktivieren.

Geben Sie hier die Bildbeschreibung ein

Nerdroid
quelle
Firebug wird eingestellt.
K7AAY
1

Die letzten beiden veröffentlichten Lösungen haben Vor- und Nachteile, aber beide sind meiner Meinung nach großartige Lösungen.

  1. Möglicherweise möchten Sie Ihre Sitzungs-ID so in Ihre URL einbetten, um die Sicherheit zu erhöhen. Aber in der Entwicklung sollte das keine Rolle spielen, aber was ist, wenn Sie vergessen, es zu entfernen? Funktioniert das auch wirklich? Würden Sie nicht so etwas wie einen fortlaufenden Zahlengenerator benötigen (in der Sitzung gespeicherte Trefferanzahl oder vielleicht sogar nur, wenn 1 dann 0, wenn 0 dann 1)?

  2. Wenn Sie eine Sitzungs-ID (oder einen anderen Sequenzer) hinzufügen, müssen Sie daran denken, sie jeder Ressource hinzuzufügen, die nicht zwischengespeichert werden soll. Einerseits ist dies besser, da Sie Ihre Sitzungs-ID nur in die Ressource einfügen können, die Sie aktiv entwickeln und testen. Auf der anderen Seite bedeutet dies, dass Sie dies tun müssen und daran denken müssen, dies für die Produktion zu entfernen.

  3. Das Ändern der Datei vhost.conf oder der Datei .htaccess macht den Trick gut, ohne dass Sie daran denken müssen, die Sitzungs-ID hinzuzufügen und zu entfernen. Der Nachteil ist jedoch, dass die Leistung aller JS- und CSS-Ressourcen beeinträchtigt wird. Wenn Sie große Dateien haben, wird dies Sie verlangsamen.

Beides scheint eine großartige, elegante Lösung zu sein - hängt von Ihren Bedürfnissen ab.

meem
quelle
1

Ich verwende CTRL- SHIFT-, DELETEdas die Datenschutzfunktion aktiviert und es Ihnen ermöglicht, Ihren Cache zu leeren, Cookies zurückzusetzen usw. auf einmal. Sie können es sogar so konfigurieren, dass es nur funktioniert, anstatt ein Dialogfeld aufzurufen, in dem Sie zur Bestätigung aufgefordert werden.

Mr. Shiny und New 安 宇
quelle
1

In höheren Versionen von Firefox wie Nightly gibt es eine Option namens "Cache deaktivieren". Sie finden sie, indem Sie auf das Zahnrad klicken. Diese Option funktioniert nur in der aktuellen Sitzung. Wenn Sie also den Inspektor schließen und neu starten, müssen Sie ihn erneut überprüfen, wenn der Fang deaktiviert werden soll.

jiyinyiyong
quelle
Ich wünschte, es gäbe eine Möglichkeit, den Cache global zu deaktivieren. Es ist sehr ärgerlich, es jedes Mal überprüfen zu müssen, wenn ich den Inspektor öffne.
Carlos Garcia
0

Nach 2 Stunden Suche nach verschiedenen Alternativen hat dies für mich funktioniert.

Meine Anforderung bestand darin, das Caching von JS- und CSS-Dateien in meiner frühlingsgesicherten Webanwendung zu deaktivieren. Gleichzeitig werden diese Dateien "innerhalb" einer bestimmten Sitzung zwischengespeichert.

Das Übergeben einer eindeutigen ID bei jeder Anfrage ist einer der empfohlenen Ansätze.

Und das habe ich getan: - Statt

<script language="javascript" src="js/home.js"></script>

ich benutzte

<script language="javascript" src="js/home.js?id=${pageContext.session.id}"></script>

Alle Nachteile des oben genannten Ansatzes sind willkommen. Sicherheitsprobleme ?

Darshan
quelle
0

In Firefox 45 können die Optionen für den Festplatten-Cache festgelegt werden, indem der Wert von: browser.cache.disk.enable geändert wird

Der Wert kann auf der Seite "about: config" eingestellt werden.

Auf http://kb.mozillazine.org/About:config_entries#Browser habe ich die folgende Beschreibung für "browser.cache.disk.enable" gefunden:

True (Standard): Verwenden Sie den Festplatten-Cache bis zu der in browser.cache.disk.capacity angegebenen Kapazität. False: Deaktivieren Sie den Festplatten-Cache (der gleiche Effekt wie das Setzen von browser.cache.disk.capacity auf 0).

Daniel
quelle
0

Dies kann zunächst einfach durchgeführt werden, z. B. durch PHP, um den Browser zu zwingen, Dateien basierend auf dem Cache-Datum (Ablaufzeit) zu erneuern. Wenn Sie es nur für experimentelle Zwecke benötigen, versuchen Sie, mit Strg + Umschalt + Entf den gesamten Cache im Firefox-Browser auf einmal zu löschen. Die dritte Lösung besteht darin, viele Add-Ons zu verwenden, die für Firefox beendet werden, um den Cache basierend auf Zeitleisten zu löschen.

Amir Ghorbani
quelle