Chrome-Speicher-Cache gegen Festplatten-Cache

96

Ich interessiere mich für Chrome Memory Cache vs Disk Cache? Ich benutze Webpack, Common Chunks Plugin und generiere alle meine Dateien mit Chunkhash.

Wie unterscheidet sich der Speicher vom Festplatten-Cache? Wenn ich meine Seite neu lade, werden einige Dateien aus dem Speichercache und einige aus dem Festplattencache geladen (bundle.js und image.jpg aus dem Speichercache und css aus dem Festplattencache). Manchmal ist es anders. Können wir das kontrollieren und auswählen, was von wo geladen wird? Der Speichercache scheint schneller zu sein als der Festplattencache.

Igor-Vuk
quelle
1
Hallo Igor, hat dies zu Ladeproblemen mit dem Webpack geführt? Wie haben Sie das gelöst?
Genießen Sie den
1
Es gab keine Probleme. Dies ist nur eine Browser-Cache-Funktion, mit der Webpack-Bundle-Dateien zwischengespeichert werden.
Igor-Vuk
Hallo Igor, ich habe gesehen, dass dies ein Problem ist, wenn einige gebündelte Dateien von der Festplatte und andere aus dem Speicher geladen werden. In diesem Fall wird ein JSONP-Fehler ausgegeben. Dies kommt nur in seltenen Fällen vor.
Genießen Sie den
se / SuperUser
chharvey

Antworten:

74

Wie ihre Namen sagten:

"Speicher-Cache" speichert und lädt Ressourcen in und aus dem Speicher (RAM). Das ist also viel schneller, aber nicht persistent. Der Inhalt ist verfügbar, bis Sie den Browser schließen.

"Disk Cache" ist persistent. Zwischengespeicherte Ressourcen werden gespeichert und auf und von der Festplatte geladen.

Einfacher Test: Öffnen Sie Chrome Developper Tools / Network. Laden Sie eine Seite mehrmals neu. Die Tabellenspalte "Größe" zeigt an, dass einige Dateien "aus dem Speichercache" geladen werden. Schließen Sie nun den Browser, öffnen Sie Developper Tools / Network erneut und laden Sie diese Seite erneut. Alle zwischengespeicherten Dateien werden jetzt "aus dem Festplatten-Cache" geladen, da Ihr Speicher-Cache leer ist.

Ruwen
quelle
4
Nun, ich wusste nicht, dass es so einfach ist.
Faizan Anwer Ali Rupani
27
Wie bestimmt der Browser, welche Assets im Speicher-Cache im Vergleich zum Festplatten-Cache gespeichert werden sollen?
Chharvey
10
Können wir konfigurieren, was im Speichercache zwischengespeichert werden soll?
Igor-Vuk
1
Ich habe einige Elemente in meiner eckigen App, die von der Festplatte geladen werden, wenn ich sie lokal ausführe. In der Produktion werden diese Dateien überhaupt nicht zwischengespeichert. Nur der Cache aus dem Speicher funktioniert in der Produktionsumgebung. Weißt du, was es verursachen könnte?
Rafael Andrade
@RafaelAndrade Beachten Sie, dass der Winkel mehrere Umgebungen bietet (in src / environment / *. Ts). environment.prod.ts definiert Ihre produktive Build-Umgebung, in der environment.ts Ihre lokale Entwicklungsumgebung definiert. In der lokalen Entwicklungsumgebung möchten Sie meistens keine zwischengespeicherten Dateien, damit Ihre lokalen Änderungen immer für Ihre App gelten.
Ruwen
14

Chrome implementiert Caches auf vielen Abstraktionsebenen. Im Kern befindet sich der HTTP-Cache (Browser) - ein Backend für andere Caching-Mechanismen. Im Allgemeinen können Caches unterteilt werden in:

  • HTTP-Cache
  • Service Worker Caches
  • Blink-Cache

HTTP-Cache

Jede Anforderung, die über das Netzwerk erfolgt, wird von einem HTTP-Cache weitergeleitet, der sich an RFC hält . Bei der ersten Anforderung wird der Cache überschrieben. Ressourcen werden durch die Ursprungs-URL verschlüsselt.

Service Worker Cache

Um Netzwerkverbindungsfehler ordnungsgemäß zu behandeln, können Sie Service Worker verwenden . Die Caches und der Cache-Speicher würden wieder von der Festplatte übernommen.

Blink-Cache

Blink verwendet den HTTP-Cache als Backend in zwei Erstellungsmodi - im Speicher und einfach (Dateisystem). Welches verwendet wird, hängt vom global festgelegten Limit für Caches ab, wie viel Speicher sie belegen können. Auch der aktuelle Renderer-Cache erhält den größten Anteil. Zwischengespeichert werden Schriftarten, Bilder und Skripte. Wenn die globale Speichernutzung einen bestimmten Schwellenwert erreicht, wird das Dateisystem-Backend verwendet.

Erzwingen im Speichercache

Wenn Sie möchten, dass Ihre Dateien aus dem Speicher bereitgestellt werden, der den Standardmechanismus überschreibt, können Sie Ihren eigenen Service Worker implementieren. Mit der Datei-API können Ressourcen gelesen und in einem Objekt im Speicher gespeichert werden. Das Überschreiben des Abrufereignisses würde dann das Lesen von Netzwerken und Dateien mit Inhalten unterdrücken, die von diesem globalen Objekt bereitgestellt werden.

Dominik G.
quelle