Ce face open_file_cache
Pentru fiecare fișier static, Nginx verifică dacă există, îl deschide și îi citește dimensiunea și data modificării. open_file_cache păstrează aceste informații (și descriptorul deschis) pentru cele mai folosite max fișiere, ca cererile următoare să sară peste apelurile de sistem.
Un fișier nefolosit timp de inactive este scos din cache. open_file_cache_valid spune la cât timp se reverifică informațiile, open_file_cache_min_uses câte cereri sunt necesare în perioada inactive ca fișierul să rămână în cache, iar open_file_cache_errors on păstrează și rezultatul „fișier inexistent”.
Câștigul se vede pe site-uri cu foarte multe cereri la fișiere statice. Efectul secundar: după o actualizare a fișierelor pe disc, Nginx poate servi informația veche până la următoarea reverificare.
Parametri
| Parametru | Descriere |
|---|---|
Context |
http, server, location. |
Implicit |
open_file_cache off;, open_file_cache_valid 60s;, open_file_cache_min_uses 1;, open_file_cache_errors off; |
max=N |
Numărul maxim de intrări; cele mai puțin folosite sunt scoase primele. |
inactive=timp |
Implicit 60s. După cât timp fără cereri este scoasă o intrare. |
Ce returnează
Nimic; reduce operațiile pe disc pentru fișierele statice.
Exemple
Exemplul 1: Cache pentru un site cu multe fișiere statice
http {
open_file_cache max=10000 inactive=30s;
open_file_cache_valid 60s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
}
Exemplul 2: Fără cache pentru un director actualizat des
Fișierele din /build/ sunt regenerate la fiecare publicare, deci aici cache-ul ar servi informații vechi.
location /build/ {
open_file_cache off;
}
Greșeli frecvente
- Publici o versiune nouă a site-ului și o parte din vizitatori primesc 404 pentru fișiere noi timp de un minut:
open_file_cache_errors ona reținut „fișier inexistent”. Reîncarcă Nginx după publicare sau micșoreazăopen_file_cache_valid. - Confunzi
open_file_cachecu cache-ul de conținut: nu păstrează conținutul fișierelor și nu are legătură cuproxy_cachesaufastcgi_cache.
Comenzi înrudite
sendfile, tcp_nopush, tcp_nodelay: sendfile trimite fișierele statice direct din nucleul sistemului, fără copieri prin memoria lui Nginx; tcp_nopush și tcp_nodelay reglează pachetele TCP.
Întrebări & Exemple de Cod:
open_file_cacheAi o nelămurire despre utilizarea comenzii
open_file_cachesau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.