Pamięć podręczna Chrome a pamięć podręczna dysku

102

Interesuje mnie Chrome Memory Cache vs Disk Cache? Używam webpacka, popularnej wtyczki chunks i generuję wszystkie moje pliki za pomocą chunkhash.

Czym różni się pamięć od podręcznej pamięci dyskowej. Kiedy przeładowuję stronę, niektóre pliki są ładowane z pamięci podręcznej, a niektóre z pamięci podręcznej dysku (bundle.js i image.jpg z pamięci podręcznej i css z pamięci podręcznej dysku). Czasami jest inaczej. Czy możemy to kontrolować, wybrać, co jest ładowane skąd? Pamięć podręczna wydaje się być szybsza niż pamięć podręczna dysku.

Igor-Vuk
źródło
1
Cześć Igor, czy spowodowało to problemy z ładowaniem pakietu internetowego? Jak to rozwiązałeś?
Rejoy
1
Nie było żadnych problemów. Jest to po prostu funkcja pamięci podręcznej przeglądarki, która buforuje pliki pakietów WebPack.
Igor-Vuk
Cześć Igor, widzę, że jest to problem, gdy niektóre pliki w pakiecie są ładowane z dysku, a niektóre z pamięci. W takim przypadku zgłasza błąd JSONP. Dzieje się tak tylko w rzadkich przypadkach.
Rejoy
se /
SuperUser

Odpowiedzi:

82

Jak powiedziały ich imiona:

„Pamięć podręczna” przechowuje i ładuje zasoby do iz pamięci (RAM). Jest to więc znacznie szybsze, ale nie jest trwałe. Treść jest dostępna do momentu zamknięcia przeglądarki.

„Pamięć podręczna dysku” jest trwała. Zasoby w pamięci podręcznej są przechowywane i ładowane na dysk iz dysku.

Prosty test: otwórz narzędzia / sieć programistów Chrome. Załaduj ponownie stronę wiele razy. Kolumna tabeli „Rozmiar” informuje, że niektóre pliki są ładowane „z pamięci podręcznej”. Teraz zamknij przeglądarkę, ponownie otwórz Narzędzia programistyczne / Sieć i ponownie załaduj tę stronę. Wszystkie pliki w pamięci podręcznej są teraz ładowane „z pamięci podręcznej dysku”, ponieważ pamięć podręczna jest pusta.

Ruwen
źródło
4
Cóż, nie wiedziałem, że to takie proste.
Faizan Anwer Ali Rupani
30
w jaki sposób przeglądarka ustala, które zasoby mają być przechowywane w pamięci podręcznej w porównaniu z dyskową pamięcią podręczną?
chharvey
11
czy możemy skonfigurować, co powinno być buforowane w pamięci podręcznej?
Igor-Vuk
1
Mam kilka itensów w mojej aplikacji kątowej, które są ładowane z dysku, gdy uruchamiam ją lokalnie, na produkcji pliki te w ogóle nie są buforowane. Tylko pamięć podręczna z pamięci działa w środowisku produkcyjnym. Czy wiecie, co może to spowodować?
Rafael Andrade
@RafaelAndrade Pamiętaj, że angular zapewnia wiele środowisk (w src / environment / *. Ts). environment.prod.ts definiuje środowisko tworzenia produktu, gdzie environment.ts definiuje środowisko programowania lokalnego. W środowisku programowania lokalnego najczęściej nie chcesz żadnych plików w pamięci podręcznej, aby zmiany lokalne zawsze dotyczyły Twojej aplikacji.
Ruwen
18

Chrome implementuje pamięci podręczne na wielu poziomach abstrakcji. U podstaw znajduje się pamięć podręczna HTTP (przeglądarki) - zaplecze dla innych mechanizmów buforowania. Ogólnie cache można podzielić na:

  • Pamięć podręczna HTTP
  • Service Worker Cache
  • Blink cache

Pamięć podręczna HTTP

Każde żądanie przesyłane przez sieć jest przekazywane przez pamięć podręczną HTTP zgodną z RFC . Przy pierwszym żądaniu pamięć podręczna jest nadpisywana. Zasoby są kluczowane przez pierwotny adres URL.

Service Worker Cache

Aby z wdziękiem radzić sobie z awariami połączeń sieciowych, możesz użyć Service Workers . Pamięci podręczne i pamięć podręczna zostaną ponownie zabrane z dysku.

Blink Cache

Blink używa Http Cache jako zaplecza w dwóch trybach tworzenia - w pamięci i prostym (system plików). To, który z nich jest używany, zależy od limitu ustawionego globalnie dla pamięci podręcznych, ile pamięci mogą one zająć. Największy udział ma również bieżąca pamięć podręczna modułu renderującego. To, co jest buforowane, to czcionki, obrazy i skrypty. Jeśli globalne użycie pamięci osiągnie określony próg, używany jest backend systemu plików.

Wymuszanie w pamięci podręcznej

Jeśli chcesz, aby Twoje pliki były obsługiwane z domyślnego mechanizmu zastępującego pamięć, możesz zaimplementować własny Service Worker. Korzystając z File Api, zasoby mogą być odczytywane i zapisywane w obiekcie w pamięci. Wówczas przesłanianie zdarzenia pobierania wstrzymałoby odczyty sieci i plików z zawartością dostarczaną z tego obiektu globalnego.

Dominik G
źródło