Chrome önbelleği ve disk önbelleği


103

Chrome bellek önbelleği ve disk önbelleği ile ilgileniyorum? Webpack, common chunks eklentisi kullanıyorum ve tüm dosyalarımı chunkhash ile oluşturuyorum.

Belleğin disk önbelleğinden farkı nedir? Sayfamı yeniden yüklediğimde, bazı dosyalar önbellekten, bazıları da disk önbelleğinden (bellek önbelleğinden bundle.js ve image.jpg ve disk önbelleğinden css) yükleniyor. Bazen farklıdır. Bunu kontrol edebilir miyiz, neyin nereden yükleneceğini seçebilir miyiz? Bellek önbelleği disk önbelleğinden daha hızlı görünüyor.


1
Merhaba Igor, Bu, web paketi ile ilgili yükleme sorunlarına neden oldu mu? Bunu nasıl çözdün?
Rejoy

1
Sorun yoktu. Bu, web paketi paket dosyalarını önbelleğe alan bir tarayıcı önbelleği işlevidir.
Igor-Vuk

Merhaba Igor, bazı paketlenmiş dosyalar diskten ve bazıları bellekten yüklendiğinde bunun bir sorun olduğunu görüyorum. Bu olduğunda bir JSONP hatası atar. Bu sadece nadir durumlarda olur.
Rejoy

Yanıtlar:


83

İsimlerinin dediği gibi:

"Bellek Önbelleği", kaynakları Belleğe (RAM) depolar ve yükler. Yani bu çok daha hızlı ama kalıcı değil. Tarayıcıyı kapatana kadar içerik mevcuttur.

"Disk Önbelleği" kalıcıdır. Önbelleğe alınan kaynaklar depolanır ve diske ve diske yüklenir.

Basit Test: Chrome Geliştirici Araçlarını / Ağını açın. Bir sayfayı birkaç kez yeniden yükleyin. "Boyut" tablo sütunu size bazı dosyaların "bellek önbelleğinden" yüklendiğini söyleyecektir. Şimdi tarayıcıyı kapatın, Geliştirici Araçları / Ağı'nı tekrar açın ve o sayfayı tekrar yükleyin. Önbelleğe alınan tüm dosyalar artık "disk önbelleğinden" yüklenir çünkü önbelleğiniz boş.


4
Bu kadar basit olduğunu bilmiyordum.
Faizan Anwer Ali Rupani

30
tarayıcı, Disk Önbelleğine göre Bellek Önbelleğinde hangi varlıkların saklanacağını nasıl belirler?
chharvey

11
bellek önbelleğinde nelerin önbelleğe alınacağını yapılandırabilir miyiz?
Igor-Vuk

1
Açısal uygulamamda yerel olarak çalıştırdığımda diskten yüklenen bazı öğelerim var, üretimde bu dosyalar hiç önbelleğe alınmıyor. Üretim ortamında yalnızca bellekten önbellek çalışır. Buna neyin sebep olabileceğini biliyor musunuz?
Rafael Andrade

@RafaelAndrade Açının birden fazla ortam sağladığını unutmayın (src / ortamlar / *. Ts'de). environment.prod.ts, environment.ts'nin yerel geliştirme ortamınızı tanımladığı üretken yapı ortamınızı tanımlar. Yerel geliştirme ortamında çoğunlukla önbelleğe alınmış dosyalar istemezsiniz, böylece yerel değişiklikleriniz her zaman uygulamanıza uygulanır.
Ruwen

18

Chrome, birçok soyutlama düzeyinde önbellekleri uygular. Çekirdekte, diğer önbellekleme mekanizmaları için bir arka uç olan HTTP (Tarayıcı) önbelleği vardır. Genel olarak önbellekler şunlara ayrılabilir:

  • HTTP Önbelleği
  • Hizmet Çalışanı Önbellekleri
  • Önbelleğin yanıp sönmesi

HTTP Önbelleği

Ağ üzerinden yapılan her istek, RFC'ye bağlı olarak HTTP Önbelleği tarafından temsil edilir . İlk kez talep edildiğinde önbelleğin üzerine yazılır. Kaynaklar, kaynak URL'ye göre anahtarlanır.

Hizmet Çalışanı Önbelleği

Ağ bağlantısı hatalarını incelikle idare etmek için Service Workers'ı kullanabilirsiniz . Önbellekler ve önbellek deposu tekrar diskten alınacaktır.

Blink Cache

Blink, iki oluşturma modunda arka uç olarak Http Önbelleği kullanır - bellekte ve basit (dosya sistemi). Hangisinin kullanılacağı, ne kadar bellek alabilecekleri önbellekler için genel olarak belirlenen sınıra bağlıdır. Ayrıca mevcut oluşturucu önbelleği en fazla payı alır. Önbelleğe alınan, yazı tipleri, resimler ve komut dosyalarıdır. Global bellek kullanımı belirli bir eşiğe ulaşırsa, dosya sistemi arka ucu kullanılır.

Bellek önbelleğinde zorlama

Dosyalarınızın varsayılan mekanizmayı geçersiz kılan bellekten sunulmasını istiyorsanız, kendi Service Worker'ınızı uygulayabilirsiniz. Dosya API'si kullanılarak kaynaklar okunabilir ve bellekteki nesnede saklanabilir. Daha sonra, fetch olayının geçersiz kılınması ağı ve bu genel nesneden sunulan içerikle dosya okumalarını bastırır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.