웹 캐싱에 대해 이야기하기 전에, CDN에 대해 이야기해 보겠습니다. 콘텐츠 전달 네트워크(CDN)는 베어러 네트워크 위에 구축되고 커버되는 분산 네트워크로, 전 세계에 위치한 엣지 노드 서버 플릿으로 구성되어 있습니다. CDN은 출발지 서버에 가해지는 부담을 분담하고, 네트워크 혼잡을 방지하며, 다양한 지역과 시나리오에서 웹사이트 콘텐츠를 분산시키고, 자원 접근 속도를 향상시킬 수 있습니다. CDN은 전 세계 IDC의 가속 노드에 오리진 서버 자원을 캐시하여, 최종 사용자가 오리진 서버 자원에 접근을 요청하고 받을 때 인근 CDN 노드의 캐시 자원을 확보하고 자원 접근 속도를 향상시키며 오리진 서버에 대한 부담을 분산할 수 있습니다.
아래 그림에서 볼 수 있듯이:
간단히 말해, 사용자가 일부 정적 자원에 접근할 때, CDN을 사용한 후 원본 서버에서 해당 리소스를 얻는 것이 아니라, 계산과 반환 데이터를 통해 현재 사용자에게 가장 가까운 CDN 서비스를 찾게 됩니다.
웹 캐싱 값은 사용자와 원본 서버 간의 서비스이며, Nginx는 웹 캐싱 기능을 네이티브로 제공합니다. 그 외에도 Varnish, Squid, Cachewall이 있는데, 이들은 웹 캐싱 프록시입니다(일부는 단순히 웹 캐싱만 제공하는 것이 아닙니다).
Nginx 캐시 구성 문서에 대하여:하이퍼링크 로그인이 보입니다.
먼저, 캐싱 서비스를 통해 자원에 처음 접근할 때 캐시 상태는 다음과 같습니다미스아래 그림과 같이 원본 서버에 이를 요청할 것입니다:
두 번째로 리소스에 접근할 때, 리소스가 캐시되어 있고 상태는 다음과 같습니다치다, 아래 그림에서 볼 수 있습니다:
Nginx의 주요 구성 매개변수는 다음과 같습니다:
주요 기준:
proxy_cache_path/data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=180d use_temp_path=off;
●path: 캐시된 파일의 저장 경로를 지정하는 필수 매개변수입니다. ●levels: 캐시 디렉터리의 계층 구조를 정의합니다. 각 계층은 1(최대 16선택지, 0-f) 또는 2(최대 256선택지, 00-ff)로 표현할 수 있으며, 중간에 : 로 구분됩니다. proxy_cache_path /data/nginx/cache; 즉, 모든 캐시는 /data/nginx/cache/d7b6e5978e3f042f52e875005925e51b 같은 하나의 디렉터리만 가집니다 proxy_cache_path /data/nginx/cache 레벨=1:2; 즉, 캐시는 2차 디렉터리(16*256=4096개의 디렉터리)로, 예를 들어 /data/nginx/cache/b/51/d7b6e5978e3f042f52e875005925e51b ● keys_zone: 필수 매개변수, 공유 메모리 영역의 이름과 크기를 정의하며, 이는 캐시 항목의 메타데이터(모든 활성 키 및 캐시 데이터 관련 정보)를 저장하는 데 사용됩니다. 이를 통해 nginx가 요청이 캐시에 맞는지 실패하는지 빠르게 판단할 수 있습니다. 1m 요청은 8000 키를 저장할 수 있고, 10m 은 80,000 키를 저장할 수 있으며, 10m 사용자는 80,000 키를 저장할 수 있습니다. ●비활성: 지정된 시간 내에 접근하지 않은 캐시 파일을 삭제하며, 기본값은 10분간 유지됩니다. ●max_size: 캐시 저장 용량의 상한선이 설정되어 있으며, 지정하지 않으면 모든 디스크 공간이 최대 사용된다. ● use_temp_path: 임시 파일을 캐시 디렉터리에 직접 배치하세요.
proxy_cachemy_cache; #指定用于页面缓存的共享内存, 구역 이름은 proxy_cache_path 지침에 의해 정의됩니다
proxy_cache_min_uses1; ##는 캐싱 임계값, 요청이 몇 번 캐시되는지 규정하며, 낭비를 피하기 위해 저빈도 요청을 캐시하지 않습니다.
proxy_cache_valid200 3m; #为不同的响应状态码设置不同的缓存时间, 이 요청은 캐시 상태 코드 200이고 캐시 지속 시간은 3분입니다
proxy_cache_key$request_uri; #指定缓存文件的key为请求的URI
add_headerNginx-캐시-상태 $upstream_cache_status; #把缓存状态设置为头部信息, 클라이언트에게 응답하세요
proxy_passhttp://webservers; #设置代理转发的后端服务器的协议和地址
Nginx 캐싱 프록시를 사용해 쿼리 문자열을 무시하세요
(끝)
|