Co oznacza keys_zone = myCache: 8m?
Jako dokumentacja mówi , nginx zachowa wszystkie aktywne klucze i informacje dane są przechowywane w pamięci wspólnej strefy, której name
i size
są konfigurowane przez parametr keys_zone. Podsumowując, podzielmy na części
/var/cache/nginx
to miejsce, w którym przechowywana jest rzeczywista pamięć podręczna. Wewnątrz folderu plik pamięci podręcznej był plikiem binarnym, ale można łatwo znaleźć w nim znacznik html.
levels=1:2
Parametr poziomy określa liczbę poziomów podkatalogów w pamięci podręcznej.
keys_zone=myCache:8m
definiował strefę pamięci współdzielonej o nazwie myCache o maksymalnym rozmiarze 8 MB. Przechowuje wszystkie aktywne klucze i metadane pamięci podręcznej. Tak więc, ilekroć nginx sprawdza, czy strona była buforowana, najpierw sprawdza strefę pamięci współużytkowanej, a następnie szuka lokalizacji rzeczywistej pamięci podręcznej, /var/cache/nginx
jeśli pamięć podręczna istnieje.
max_size
był maksymalny rozmiar pamięci podręcznej, np. rozmiar plików włączony /var/cache/nginx
.
inactive=1h
Określ maksymalny czas nieaktywnej pamięci podręcznej, którą można zapisać. Dane w pamięci podręcznej, które nie są dostępne w czasie określonym przez inactive
parametr, są usuwane z pamięci podręcznej bez względu na ich świeżość.
Jak działa sprawdzanie poprawności i usuwanie pamięci podręcznej
Zaczerpnięte z list mailingowych nginx
Dyrektywa proxy_cache_valid określa, jak długo odpowiedź zostanie uznana za prawidłową (i zostanie zwrócona bez żadnych żądań do zaplecza). Po tym czasie odpowiedź zostanie uznana za „nieaktualną” i albo nie zostanie zwrócona, albo będzie zależała od ustawienia proxy_cache_use_stale .
Argument nieaktywny dla proxy_cache_path określa, jak długo odpowiedź będzie przechowywana w pamięci podręcznej po ostatnim użyciu. Pamiętaj, że nawet nieaktualne odpowiedzi będą brane pod uwagę ostatnio, jeśli będą do nich żądania.
Jak rozumiem, tutaj pseudokod, jak działa nginx
Kiedy pojawi się żądanie
if cache.exist AND (now() - cache.first_retrieved) < proxy_cache_valid:
use it
else:
retrieve from backend
replace the old ones
W innym procesie menedżer pamięci podręcznej wykonuje tę logikę
if (now() - cache.last_used) > inactive:
del cache
if all-cache.size > max-size:
del *the most inactive cache* until size < max-size
Co się stanie, jeśli wartość parametru proxy_cache_valid (12h) jest wyższa niż określona nieaktywna wartość (1h) w ścieżce proxy_cache_path?
Dopóki żądanie i dostęp do określonej pamięci podręcznej, ten obiekt pamięci podręcznej będzie nadal ważny do 12 godzin po umieszczeniu obiektu w pamięci podręcznej. Następnie pamięć podręczna została uznana za niepoprawną, więc nginx pobierze z backendu i zresetuje prawidłowy timer. Ale jeśli obiekt był nieaktywny (nie uzyskano dostępu) przez ponad godzinę - nawet w ciągu 12 godzin ważnego okresu buforowania - nginx usunie go z powodu inactive
parametru.
365d
i jest prawidłowy, to1d
nginx będzie pobierał żądania w pamięci podręcznej każdego dnia przez rok, nawet jeśli nikt nie zgłosi takiego żądania?inactive
przyjmują wartości czasu, ale nie widzę, jakich wartości mogę użyć pozah
(jak około 1 miesiąc? 1 dzień? Itd.). I co powinniśmy sprecyzowaćmax_size
? Bajty? Czy mogę użyć 1M na 1 megabajt?