GH GambleHub

CDN과 가장자리 캐싱

CDN과 가장자리 캐싱

1) 목표

CNC (Content Delivery Network) 은 에지 노드에서 정적 및 조건부 동적 컨텐츠를 캐시하고 스케일, 안정성 및 보안 (DDoS/WAF) 을 제공하며 엣지 로직을 추가합니다 (응답/요청, 인증, A/B 재 작성).

2) 캐시 모델 및 키

계획 + 호스트 + 경로 +? (선택된 쿼리 파람) + 헤더 (Vary) '

추천:
  • 정규화 쿼리 ('utm _' 제외, 'v', 'lang', 'country' 등).
  • 'Vary' 를 최소화하고 (예: 'Vary: Accept-Encoding, Accept-Language') 'Vary:' 를 피하십시오.
  • API - 경로 + 버전 식별자 (세머, 해시, 빌드 id) + 필요한 쿼리/헤더 (예: 'X-Tenant') 의 키.
  • 개인화 된 페이지 - 가장자리 세분화 (쿠키/지오 별) 또는 Skip-Cache.

3) TTL 정책 및 헤더

기본 제목:
  • '캐시 제어: 공개, 최대 연령 = 300, s-maxage = 3600, 부실한 동안 재발 방지 = 60, 부실한 경우 오류 = 300'
  • 'Surrogate-Control' (지원되는 경우) 은 브라우저 이외의 CDN에 대한 별도의 정책입니다.
  • 'ETag '/' Last-Modified' -조건부 요청 (304) 및 트래픽 절약.
  • 비공개: 캐시되지 않은 경우 '캐시 제어: 비공개, 매장 없음'.
  • 캐시를 허용하는 API: '캐시 제어: 공개, s-maxage = 60' + 버전 키.

권장 접근 방식: "영원한" 리소스 (파일 이름에 지문 포함) → 'max-age = 31536000, 불변성'; "페이지/JSON" → 짧은 TTL + SWR.

4) 장애: 퍼지/소프트 퍼지

스크립트로 퍼지: 포인트 단위.
태그/키 별 퍼지: 그룹 퍼지 ('대리 키: 제품: 42 범주: 음식' 사용).
소프트 퍼지: 내용이 "오래된" 것으로 표시되고 새 버전이 수신 될 때까지 엣지가 오래되었습니다.
"따뜻한" 워밍업: 배포 후 해당 지역에서 메인 페이지를 가져옵니다.

5) 엣지 성능 패턴

Stale-While-Revalidate: "오래된" 카피 + 배경 업데이트로 빠른 응답.
중요한 리소스의 프리페치 (프리로드, 프리 커넥트, dns 프리 페치).
압축: ggip/br (텍스트), CDN이 지원되는 경우 zstd.
Q/2/3 (QUIC): 멀티플렉싱 및 대기 시간 단축.
주변에서 TLS 세션 재개 및 OCSP 스테이플 링.

6) 이미지 및 비디오

가장자리에서의 이미지 최적화: 크기 조정/형식 협상 ('수락: 이미지/avif, webp'), а봉합사 -WebP/AVIF, DPR-вариант달러.
반응 형 게으르다 ('srcset', 'sizes').
비디오: HLS/DASH, 조각난 MP4, 폭풍을 줄이기위한 원점 차폐 (중앙 캐시).

개인 이미지에 대한 미리 보기 그림 서비스 및 서명

7) 주변 보안

WAF: OWASP 규칙, 국가/ASN 차단, 키 (IP + 쿠키 + 토큰) 가있는 속도 제한.
DDoS: L3/4 스크러빙, L7 체커, JS 챌린지/개찰구.
개인 리소스 (비디오/보고서) 를위한 서명 된 TP/쿠키: TTL + HMAC/EdDSA.
지오 펜싱 및 규정 준수 (예: 금지 지역).

8) 가장자리 계산 (가장자리의 논리)

사례:
  • 캐시를 끊지 않고 개인화: 세그먼트 (A/B), 지오, 가장자리의 언어 및 컨텐츠가 캐시됩니다.
  • 답변/제목을 다시 작성하고 AB 분할을 리디렉션합니다.
  • 토큰 기반 인증: JWT 서명 확인, 키 바인딩.
  • 쿠키/퍼센트 별 카나리아: 새 백엔드로의 트래픽의 일부.

기술의 예로는 Cloudflare Workers/Durable Objects, Fastly Compute @ Edge, AWS Lambda @ Edge가 있습니다.

9) 다중 CDN과 전역 경계

이유: 적용 범위, SLA, 비용, 지역 제한, 사건 격리.
GSLB/교통 운영: 지리/대기 시간/실제 오류; 여러 유리한 지점에서 건강 검진.
단일 키/헤더 체계 (Surrogate-Key), 동기화 된 퍼지 규칙.
원점 방패는 장애가있는 원점을 "적중" 하지 않도록 모든 CDN에 공통적입니다.

10) 로깅 및 메트릭

수집:
  • 적중 비율 (캐시, CNC → 에지/원산지), 바이트 적중 비율.
  • 대기 시간 p50/p95/p99, 코드/경로별 오류율.
  • 원산지 가져 오기: RPS/바이트/오류 (중복 누락으로부터 보호).
  • 지역 차트 (Pop/ASN/country 별).
  • 관찰 가능성과 통합: Prometheus (수출 업체를 통한 풀), Grafana/OTel (에지 로그에서 푸시).

11) SEO 리스트/SSR

SWR 및 짧은 TTL이있는 SEO 페이지는 빠르고 신선합니다.
시테 맵/로봇-우리는 오랫동안 캐시하지만 소프트 퍼지를 허용합니다.
서비스 작업자: 오프라인 캐싱, 중요한 경로 사전 가져오기, 대상 업데이트.

12) 샘플 구성 및 헤더

12. 캐시 제어 프로필 1 개

지문이있는 정적:

Cache-Control: public, max-age=31536000, immutable
HTML과 SSR:

Cache-Control: public, max-age=60, s-maxage=600, stale-while-revalidate=60, stale-if-error=600
Surrogate-Control: max-age=600, stale-while-revalidate=120
API (캐시 된 매장):

Cache-Control: public, s-maxage=60
Vary: Accept-Encoding

12. 2 NGINX (원본) -쿼리/헤더 정규화

nginx map $arg_utm_source $utm_skip { default 1; "" 0; }
map $args $normalized_args {
default "";
"~(^    &)v=([a-z0-9]+)(&    $)" "v=$2";
}
proxy_cache_key "$scheme://$host$request_uri?$normalized_args";
add_header Surrogate-Key "product:{{id}} category:{{cat}}";

12. 3 Fastly VCL-소프트 퍼지 및 키

vcl sub vcl_recv {
set req. hash += req. http. host req. url. path;
set req. hash += querystring. decode(req. url, "v,lang");
if (req. method == "PURGE") {
if (req. http. Fastly-Soft-Purge) { softpurge; } else { purge; }
return (synth(200, "purged"));
}
}
sub vcl_deliver {
set resp. http. Surrogate-Key = "product:42 category:food";
}

12. 4 Cloudflare 작업자-서명 된 탭

js export default {
async fetch(req, env) {
const url = new URL(req. url);
if (url. pathname. startsWith("/private/")) {
const token = url. searchParams. get("token");
if (!token! verify(token, env. SIGNING_KEY)) return new Response("Forbidden", { status: 403 });
}
return fetch(req);
}
}

12. 5 Lambda @ Edge-지오 옵션

js exports. handler = async (event) => {
const req = event. Records[0].cf. request;
const country = req. headers['cloudfront-viewer-country']?.[0]?.value          'US';
if (country === 'DE') req. headers['accept-language'] = [{ key:'Accept-Language', value:'de' }];
return req;
};

13) 개인 데이터 및 API

키 격리 (사용자 당/토큰 당) 없이 개인 응답을 캐시하지 마십시오.
서명 된 쿠키/헤더 및 'Vary: 승인' 을 엄격한 제어 (그렇지 않으면 캐시 버스트) 로만 사용하십시오.
안전한 대안: 공개 계층 (캐시) 과 개인 포함 (ESI/에지 구성) 을 분리하십시오.

14) 지리/콘텐츠 규칙

라이센스 제한: 원점을 차단하는 대신 가장자리에 대한 지오 거부, 장소 보유자.
연령/규제 배너-가장자리에 렌더링 (펀치 캐시하지 마십시오).

15) 반 패턴

전체 사이트에 대한 '캐시 없음, 저장하지 않음' → CDNA 효과 손실.
'Vary' on 불안정한 헤더 (예: '사용자-에이전트') → 카디널리티.
각 릴리스에서 전체 캐시를 지우십시오.
SWR → 폭풍이없는 짧은 TTL이 시작됩니다.
개인 페이지는 세분화/토큰 키없이 캐시됩니다.
원산지 방패 부족 → 여러 병렬 미스.

16) 구현 점검표 (0-45 일)

0-10 일

자원을 분류하십시오: 불변의/HTM/API입니다.

(PHP 3 = 3.0.6, PHP 4)

SWR/IFE 및베이스 퍼지를 입력하십시오.

11-25 일

에지 이미지 최적화 (크기/형식), 원점 차폐.
개인 미디어, WAF/DDoS 프로필에 서명 된 탭.
대시 보드: 적중률, 원산지 페치, p95 by POP.

26-45 일

다중 CNC 또는 GSLB 전략, 주변의 카나리아 가중치.
키별로 세분화/AB/geo, 소프트 퍼지 용 에지 컴퓨팅.
CI/CD의 자동 온난화 및 퍼지 통합.

17) 성숙도 지표

정적의 경우 바이트 적중률이 85% 이상, HTM/조건부 역학의 경우 60% 이상입니다.
최고점에서 안정적인 원산지 RPS ("폭풍" 없음).
p95 TTFB는 주요 지역에서 30% 이상 감소했습니다.
사고에 대한 오래된 응답의%> 90% (사용자가 거의 눈치 채지 못함).
릴리스 파이프 라인에서 퍼지 키의 완전한 자동화.

18) 결론

효과적인 CNC 회로는 키/TTL/옵션, 장애 분야 및 에지 로직입니다. SWR/IFE, 원점 차폐, 미디어 최적화 및 강력한 보안 (WAF, 서명 된 IM) 을 추가하십시오. 메트릭을 표준화하고 퍼지를 CI/CD에 통합하면 최대 하중과 검은 백조에 대비할 수있는 빠르고 경제적이며 안정적인 둘레를 얻을 수 있습니다.

Contact

문의하기

질문이나 지원이 필요하시면 언제든지 연락하십시오.우리는 항상 도울 준비가 되어 있습니다!

Telegram
@Gamble_GC
통합 시작

Email — 필수. Telegram 또는 WhatsApp — 선택 사항.

이름 선택 사항
Email 선택 사항
제목 선택 사항
메시지 선택 사항
Telegram 선택 사항
@
Telegram을 입력하시면 Email과 함께 Telegram에서도 답변드립니다.
WhatsApp 선택 사항
형식: +국가 코드 + 번호 (예: +82XXXXXXXXX).

버튼을 클릭하면 데이터 처리에 동의하는 것으로 간주됩니다.