keys_zone = myCache : 8m은 무슨 뜻인가요?
마찬가지로 문서 상기 , nginx를 유지할는 데이터가 저장되는 모든 활성에 대해 키 정보를 그 공유 메모리 영역으로 name
하고 size
keys_zone 파라미터에 의해 구성된다. 완전성의 문제로 파트 당 분류하자
/var/cache/nginx
실제 캐시가 저장된 장소입니다. 폴더 내에서 캐시 파일은 이진 파일이지만 그 안에 html 태그를 쉽게 찾을 수 있습니다.
levels=1:2
is levels 매개 변수는 캐시의 서브 디렉토리 레벨 수를 설정합니다.
keys_zone=myCache:8m
최대 크기가 8MB 인 myCache라는 공유 메모리 영역을 정의하고있었습니다. 캐시의 모든 활성 키와 메타 데이터 를 보유 합니다. 따라서 nginx가 페이지가 캐시되었는지 확인하면 항상 공유 메모리 영역을 확인한 다음 /var/cache/nginx
캐시가 존재하는 경우 실제 캐시의 위치를 찾습니다 .
max_size
에 캐시 예를 들어, 파일 사이즈의 최대 크기였다 /var/cache/nginx
.
inactive=1h
캐시를 저장할 수있는 최대 비활성 시간을 지정하십시오. inactive
매개 변수로 지정된 시간 동안 액세스되지 않은 캐시 된 데이터는 최신 상태에 관계없이 캐시에서 제거됩니다.
캐시 유효성 검사 및 삭제 작동 방식
nginx 메일 링리스트 에서 가져옴
지시어 proxy_cache_valid 는 응답이 유효한 것으로 간주되는 기간을 지정하며 백엔드 요청없이 반환됩니다. 이 시간이 지나면 응답은 "stale"로 간주되며 반환되지 않거나 proxy_cache_use_stale 설정 에 따라 달라집니다 .
인수 비활성 의 proxy_cache_path의 지정은 얼마나 응답 마지막 사용 후 캐시에 저장됩니다. 요청이 있으면 최근에 부실한 응답도 사용 된 것으로 간주됩니다.
내가 이해하는 것처럼, 여기 nginx가 작동하는 의사 코드
요청이 오면
if cache.exist AND (now() - cache.first_retrieved) < proxy_cache_valid:
use it
else:
retrieve from backend
replace the old ones
다른 프로세스에서 캐시 관리자는이 논리를 수행합니다.
if (now() - cache.last_used) > inactive:
del cache
if all-cache.size > max-size:
del *the most inactive cache* until size < max-size
proxy_cache_valid (12h)가 proxy_cache_path에 지정된 비활성 값 (1h)보다 높으면 어떻게됩니까?
요청이 특정 캐시에 액세스 한 경우 해당 캐시 개체는 개체가 캐시에 저장된 후 12 시간이 지나야 계속 유효합니다. 그 후, 캐시는 유효하지 않은 것으로 간주되어 nginx는 백엔드에서 가져오고 유효한 타이머를 재설정합니다. 그러나 객체가 12 시간의 유효한 캐시 기간에도 1 시간 이상 비활성 (액세스 할 수없는) 상태 인 경우 nginx는 매개 변수로 인해 객체를 삭제합니다inactive
.
365d
이고 유효1d
하면 nginx는 아무도 요청을하지 않더라도 매일 1 년 동안 캐시에서 요청을 가져 옵니까?