Apa arti dari keys_zone = myCache: 8m?
Seperti yang dikatakan dokumentasi , nginx akan menyimpan semua kunci aktif dan informasi tentang data disimpan dalam zona memori bersama, yang name
dan size
dikonfigurasikan oleh parameter keys_zone. Sebagai kelengkapan, mari kita hancurkan per bagian
/var/cache/nginx
adalah tempat di mana cache sebenarnya disimpan. Di dalam folder, file cache adalah file biner tetapi Anda dapat dengan mudah melihat tag html di dalamnya.
levels=1:2
adalah level levels menentukan jumlah level subdirektori dalam cache.
keys_zone=myCache:8m
mendefinisikan zona memori bersama bernama myCache dengan ukuran maksimum 8 MB. Itu memegang semua kunci aktif dan metadata cache. Jadi, setiap kali nginx memeriksa apakah suatu halaman di-cache, ia berkonsultasi terlebih dahulu dengan zona memori bersama, lalu mencari lokasi cache aktual /var/cache/nginx
jika ada cache.
max_size
ukuran maksimum cache misalnya ukuran file aktif /var/cache/nginx
.
inactive=1h
tentukan cache waktu tidak aktif maksimum dapat disimpan. Data dalam cache yang tidak diakses selama waktu yang ditentukan oleh inactive
parameter bisa dihapus dari cache terlepas dari kesegarannya.
Cara kerja validasi dan penghapusan cache
Diambil dari milis nginx
Arahan proxy_cache_valid menentukan berapa lama respons akan dianggap valid (dan akan dikembalikan tanpa ada permintaan untuk backend). Setelah waktu ini, respons akan dianggap "basi" dan tidak akan dikembalikan atau akan tergantung pada pengaturan proxy_cache_use_stale .
Argumen tidak aktif dari proxy_cache_path menspesifikasikan berapa lama respon akan disimpan dalam cache setelah penggunaan terakhir. Perhatikan bahwa bahkan tanggapan basi akan dianggap baru digunakan jika ada permintaan kepada mereka.
Seperti yang saya mengerti, di sini pseudocode cara kerja nginx
Ketika permintaan datang
if cache.exist AND (now() - cache.first_retrieved) < proxy_cache_valid:
use it
else:
retrieve from backend
replace the old ones
Dalam proses lain, manajer cache melakukan logika ini
if (now() - cache.last_used) > inactive:
del cache
if all-cache.size > max-size:
del *the most inactive cache* until size < max-size
Bagaimana jika proxy_cache_valid (12j) lebih tinggi dari nilai tidak aktif yang ditentukan (1j) di proxy_cache_path?
Selama permintaan dan mengakses cache tertentu, objek cache itu masih akan berlaku sampai 12 jam setelah objek memasukkan cache. Setelah itu, cache dianggap tidak valid, sehingga nginx akan mengambil dari backend dan mereset timer yang valid. Tetapi jika objek tidak aktif (tidak diakses) lebih dari satu jam - bahkan dalam 12 jam periode cache yang valid -, nginx akan menghapusnya karena inactive
parameter.
365d
dan valid1d
maka nginx akan mengambil permintaan dalam cache setiap hari selama satu tahun bahkan jika tidak ada yang membuat permintaan itu?