가장자리 캐시 및 POP
1) POP이란 무엇이며 왜 "가장자리" 입니까
POP (Point of Presence) 는 지리적으로 사용자와 가까운 콘텐츠 전달 네트워크 (CNC/edge) 노드입니다. 에지 캐시-POP에 직접 응답을 저장하는 계층으로 다음을 줄입니다
대기 시간 (클라이언트 이전의 RTT 미만).
원산지 당 부하 및 비용 (오프로드).
지역/구름 사이의 트래픽 (탈출 절약).
가장자리는 캐시 만이 아닙니다. 최신 POP는 L7 라우팅, WAF/봇 필터, 속도 제한, A/B/카나리아, 변환 및 에지 컴퓨팅 (스크립트/함수) 을 지원합니다.
2) 가장자리 캐싱 아키텍처
2. 1 플랫 vs 계층
플랫: 모든 POP는 원산지입니다. 단순하지만 비용이 많이 듭니다.
계층/방패: POP → 방패 팝 (중앙 캐시) → 원점. 방패는 캐시 미스를 축적하고 원산지를위한 우산을 만듭니다.
2. 2 개의 지역 세그먼트
지역/관할권 별 별도의 캐싱 도메인 (GDPR/데이터 현지화).
변형: "EU 전용 POP" 및 "Global POP", 별도의 키/규칙.
2. 3 Anycast + 대기 시간/지리 인식 라우팅
Anycast는 BGP를 통해 클라이언트를 가장 가까운 POP로 가져옵니다.
활성 RTT/오류 측정시 지역/지역 풀 간 지리/대기 시간 인식 전환.
3) 캐시 키, 'Vary', TTL 및 신선도
3. 1 키 디자인
쿼리 정규화: 쿼리 매개 변수 정렬, 노이즈 제거 (utm, ref).
시맨틱 축 포함: '테넌트', '로케일', '스키마 버전' ('v = 3'), PII 피하기.
개인 콘텐츠의 경우 공개 및 개인 캐시를 분리하십시오 (§ 7 참조).
3. 캐시 컨트롤 2 개 (HTT)
제목:- '캐시 제어: 공개, 최대 연령 = 60, s-maxage = 300, 부실한 동안 재발 방지 = 60, 부실한 경우 오류 = 120'
- 조건부 GET 용 'ETag '/' Last-Modified' (304).
- Vary: 카디널리티 최소화 ('수락 인코딩', '수락 언어', 때로는 '승인 '/' 쿠키' 개인 경로).
- "니어 스피커" 용 마이크로 캐시: 1-5 초 + SWR.
3. 3 부동산 전략
SWR (부실한 동안): 구식 답변을 제공하고 배경으로 업데이트하십시오.
SIE (stale-if-orr): 원점 오류가 발생하면 'SIE' -TTL 이전에 캐시를 사용합니다.
소프트/하드 TTL: 소프트 용어 (오염 될 수 있음), 하드 (풀 미스).
4) 장애: "가장자리" 업데이트 방법
4. 키와 태그별로 1
PURGE/BAN (IM/접두사) -거칠지 만 빠릅니다.
대리 키/태그: 태그를 객체 ('기사: 42', '범주: 7') 에 할당하고 태그로 금지하십시오.
4. 2 이벤트 장애
원산지 데이터를 변경할 때 이벤트 (Kafka/NATS) → 에지 비활성화 통화 BAN/PURGE/소프트 만료.
4. 3 아티팩트 버전 지정
파일 이름의 정적 콘텐츠 해시.
API의 경우 호환되지 않는 변경에 대한 키 버전 ('v = 4') 을 변경하십시오.
5) 원산지 보호 및 성능
5. 1 오리진 차폐
단일 미스 포인트로 쉴드 POP를 켜면 폭풍에 원점이 곱해집니다.
5. 2 연결/단일 비행
가장자리에서 한 번은 캐시를 놓칠 때 "펀치" 를 요청합니다. 나머지는 기다립니다 (캐치 업 스탬프 없음).
5. 3 속도 제한/큐/Shedding не가장자리
오버로드 된 경우 원점이 아닌 우선 순위가 낮은/익명의 요청을 POP로 삭제하십시오.
5. 4 서명 된 맵/서명 된 쿠키
원산지는 가장자리 뒤에 숨겨져 있습니다. TTL 및 속성 (IP/Geo/Path) 을 사용하여 서명 된 링크/쿠키를 통해 개인 컨텐츠에 액세스하여 "모든 사람" 에게 배포하지 마십시오.
6) 운송 및 변환
6. QUIC
HTT/2: 멀티플렉싱, 헤더 압축.
TP/3/QUIC: HOL 잠금 장치가 적고 p95/p99 TTFB 미만의 손실 → 채널에서 더 좋습니다.
6. 2 압축 및 이미지
텍스트 용 Brotli, 이미지 용 AVIF/WebP, 가장자리에서 이미지 크기 조정 (응답 크기, DPR).
형식/크기 별 캐시 변형: 키에는 '너비/형식' (또는 'Vary: 수락 '/클라이언트-힌트) 이 포함됩니다.
6. 3 TLS/0-RTT (깔끔한)
세션 재생은 설치 속도를 높이고 0-RTT는 재생에 취약 할 수 있습니다 → demempotent GET에서만 사용할 수 있습니다.
7) 퍼블릭 vs 프라이빗 엣지 캐시
7. 1 공개
'캐시 제어: 공개, s-maxage =... '그리고 최소한의' Vary '
카탈로그, 뉴스, 사진, CNC 정적에 적합합니다.
7. 2 개인/개인화
옵션:- 공유 레벨: '캐시 제어: 개인' (브라우저 캐시) 에서 캐시하지 마십시오.
- 키 세분화: 키에 테넌트/사용자 ID (또는 토큰 해시) 를 포함하고 개인 공유 (스토리지 및 PII에주의) 로 표시합니다.
- 서명 된 쿠키 및 가장자리: 캐시는 공개되어 있지만 서명으로 액세스합니다 (가장자리에 암호화 된 세션 상태가있는 옵션).
8) 가장자리 계산 (작업자/기능)
POP에서의 쉬운 기능: 경로/헤더 재 작성, A/B 분할, 키 정규화, SWR 로직, 인접 리소스의 프리 페치.
밀리 초 작업을 위해 POP의 로컬 KV/캐시 API.
제한: 짧은 타임 아웃/메모리, 오래 지속되는 연결 부족, PII/지역에 대한 신중한 작업.
의사 예 (근로자와 같은)
js export default {
async fetch(req, env) {
const key = normalize(req);
let res = await caches. default. match(key);
if (res) return withHitHeader(res, "HIT");
res = await fetch(req, { cf: { cacheEverything: true }});
const ttl = computeTTL(res);
eventWaitUntil(caches. default. put(key, res. clone(), { expirationTtl: ttl }));
return withHitHeader(res, "MISS");
}
}
9) 설정 예
9. 1 Nginx: 마이크로 캐시 + SWR
nginx proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=api:200m inactive=30m;
map $request_method $skip_cache { default 0; POST 1; PUT 1; DELETE 1; }
server {
location /api/list {
proxy_cache api;
proxy_cache_key "$scheme://$host$uri$is_args$args";
proxy_cache_valid 200 2s; # micro-cache proxy_cache_use_stale error timeout updating;# SIE + SWR proxy_cache_background_update on;
add_header X-Edge-Cache $upstream_cache_status;
proxy_pass http://origin_pool;
}
}
9. 2 Varnish: 대리 키... BAN
vcl sub vcl_recv {
if (req. method == "BAN") {
if (req. http. Surrogate-Key) {
ban("obj. http. Surrogate-Key ~ " + req. http. Surrogate-Key);
return (synth(200, "Banned"));
}
}
}
sub vcl_deliver {
set resp. http. Surrogate-Key = "article:42 tag:author:7";
set resp. http. Cache-Control = "public, s-maxage=300, stale-while-revalidate=60";
}
9. 3 특사 (에지 캐시 필터)
yaml http_filters:
- name: envoy. filters. http. cache typed_config:
"@type": type. googleapis. com/envoy. extensions. filters. http. cache. v3. CacheConfig typed_config:
"@type": type. googleapis. com/envoy. extensions. http. cache. simple_http_cache. v3. SimpleHttpCacheConfig
9. 4 CloudFront 스타일 동작 (축소판)
동작 A: '/images/' - 긴 TTL, 압축은 형식이 다릅니다.
동작 B: '/api/' - 짧은 TTL, SWR, 서명 된 쿠키, WAF/봇 보호.
Origin Shield가 활성화되어 있으며 상태 500/502/504 → '부실 오류' 입니다.
10) 관찰 가능성, SLO 및보고
10. 1 메트릭
(PHP 3 = 3.0.6, PHP 4)
(PHP 3 = 3.0.6, PHP 4)
(PHP 3 = 3.0.6, PHP 4)
(PHP 3 = 3.0.6, PHP 4)
(PHP 3 = 3.0.6, PHP 4)
10. 2 개의 통나무/트레일
'HIT/MISS/STALE/UPDATING/BYPASS' 라는 레이블이 붙은 로그, 키, TTL, Pop, 테넌트.
분산 트레이스에서 소스 ('edge', 'orign') 및 원인 (재정의/부실/오류) 을 표시하십시오.
10. 3 가지 SLO 예
"따라서 '/api/list ': p99 TTFB
"'stale-if-orr' 응답률은 하루에 1% 입니다".
11) 보안, 개인 정보 보호, 규정 준수
WAF/봇 관리-원산지 필터링을위한 에지.
데이터 지역: 유효한 POP에만 개인 아티팩트를 저장합니다. 지역 별 키 및 ACL을 사용하십시오.
가장자리의 서명과 토큰은 공개 캐시에서 개인 답변을 제공하지 않습니다.
PII 최소화: 키에 개인 데이터를 포함하지 마십시오. 쿠키 암호화; 개인화를위한 짧은 TTL.
12) 전형적인 요리법
12. 1 "거의 동적" (테이프/목록)
가장자리에 + SWR이있는 마이크로 캐시 1-3, 빈 결과 1-5 초에 대한 쉴드 지원, 단일 비행, 네거티브 캐시.
12. 2 이미지/미디어 구름
Edge recise/formatting (WebP/AVIF), '너비/형식' 별 캐시 옵션, 긴 TTL, 컨텐츠 태그 별 장애.
12. 개인화 된 AP 3 개
'캐시 제어: 개인' 또는 서명 된 쿠키 + 키 세분화 (테넌트), 짧은 TTL, 응답의 "거의 공개" 부분에 대한 SWR.
12. 큰 판매/픽 4 개
Shield는 주요 자원 (예열) 을 예열하고 정적을위한 TTL, 공격적인 SWR/SIE, 원산지를위한 하드 한계를 증가시킵니다.
13) 반 패턴
응답이 다른 'Vary' → 누출/잘못된 데이터
거대한 'Vary' → 카디널리티 → 낮은 타격.
prod/실험을위한 일반적인 캐시 → 오염.
원산지에서 단일 비행 → 폭풍이 누락되지 않습니다.
제한없이 SWR → 레이스 및 눈사태를 업데이트하여 요청을 검증합니다.
공개 → 보안 사고로 개인 응답의 가장자리 캐시.
전 세계 하중 → 원점 과열시 계층/차폐 부재.
14) 구현 점검표
- 맵 POP 적용 범위는 모든 캐스트 + 대기 시간 라우팅을 가능하게합니다.
- 계층/차폐 및 단일 비행/통합 정책을 선택하십시오.
- 디자인 키와 바리 (최소 카디널리티, PII 없음).
- TTL/SWR/SIE (소프트/하드 TTL) 및 네거티브 캐시 설정.
- 서명 된 IM/쿠키를 활성화하고 원점을 숨기고 WAF/봇 필터를 활성화하십시오.
- 장애 조직: 대리 키/BAN + 이벤트 중심.
- 적중/바이트 적중/오프로드/TTFB 메트릭 및 팝 당 대시 보드.
- 봉우리 전에 워밍업, 런북에서 폭풍/과부하.
- 개인 정보 보호/지역 테스트, 주요 및 정책 감사.
- 엣지 및 TTL/SWR 자동 조정 기준에 대한 SLO/잘못된 예산.
15) FAQ
Q: 가장자리에서 TTL을 선택하는 방법?
A: 허용되는 노후화 및 적중 비율 목표를 해제하십시오. "근거리 역학" 의 경우 - 1-5 s + SWR; 디렉토리/이미지-이벤트/태그 별 장애가있는 시간/시간.
Q: Shield POP는 언제 필요합니까?
A: 글로벌 트래픽 또는 핫 키로: 쉴드는 원산지 누락을 크게 줄이고 "포착" 파도를 안정화시킵니다.
Q: 승인 된 응답을 어떻게 캐시합니까?
A: '비공개' (브라우저) 또는 서명 된 쿠키/IM 및 키 세분화 (PII 제외) 가있는 공개 또는 일반적으로 중요한 개인 데이터를 우회하십시오.
Q: TH/3으로 무엇을해야합니까?
A: 활성화: 모바일/손실 채널이 특히 승리합니다. 그림% 1개의 캡션을 편집했습니다.
16) 총계
엣지 캐시와 POP 네트워크는 고속 및 경제 플랫폼의 기초입니다. 성공은 올바른 키와 'Vary', 합리적인 TTL/SWR/SIE, 태그/이벤트 장애, 계층/쉴드 원점 보호, 관찰 (적중/오프로드/TTFB) 및 보안/개인 정보 보호 규율에 의해 결정됩니다. 체크리스트를 따르십시오. "가장자리" 는 놀라움의 원천이 아니라 가속기입니다.