GH GambleHub

CDNとエッジキャッシュ

CDNとエッジキャッシュ

1)目的

CDN (Content Delivery Network)は、レイテンシと原点への負荷を低減します。エッジノード上の静的および条件付き動的コンテンツをキャッシュし、スケール、安定性、セキュリティ(DDoS/WAF)を提供し、エッジロジックを追加します。

2)キャッシュモデルとキー

'Ключ scheme+host+path+?(selected query params)+headers (Vary)'

推奨される:
  • Normalizeクエリ('utm _' exclude、 leave' v'、'lang'、'country'など)。
  • 'Vary'(例えば、'Vary: Accept-Encoding、 Accept-Language')を最小化し、'Vary:'を避ける。
  • APIの場合-route+バージョン識別子(semver、 hash、 build id)+必要なクエリ/ヘッダ(例えば、'X-Tenant')からのキー。
  • パーソナライズされたページ-エッジセグメンテーション(Cookie/geoによる)またはSkip-Cache。

3) TTLポリシーとヘッダー

基本見出し:
  • 'Cache-Control: public、 max-age=300、 s-maxage=3600、 stale-while-revalidate=60、 stale-if-error=300'
  • 「サロゲートコントロール」(サポートされている場合)は、ブラウザ以外のCDNの個別のポリシーです。
  • 'ETag'/'Last-Modified'-条件付きリクエスト(304)とトラフィック節約。
  • プライベートの場合:'Cache-Control: private、 no-store'、キャッシュされていない場合。
  • キャッシュを許可するAPI: 'Cache-Control: public、 s-maxage=60'+バージョンキー。

推奨アプローチ:「永遠の」リソース(ファイル名の指紋付き)→'max-age=31536000、 immutable';「pages/JSON」→短いTTL+SWR。

4)障害: パージ/ソフトパージ

URLでパージする:pointwise。
タグ/キーによるパージ:グループのパージ('Surrogate-Key: products: 42 category: food'を使用)。
Soft-purge:コンテンツが「時代遅れ」にマークされ、新しいバージョンが受け取られるまでエッジは古くなります。
ウォームアップ:展開後、リージョンからメインページをプルします。

5)端の性能パターン

Stale-While-Revalidate:「古い」コピー+バックグラウンドアップデートで迅速な応答。
重要なリソースのプリフェッチ(プリロード、プリコネクト、dns-prefetch)。
圧縮:gzip/br(テキスト用)、CDNがサポートされている場合zstd。
HTTP/2/3 (QUIC):多重化およびより少ないレイテンシ。
TLSセッションの再開とOCSPが周囲に固定されています。

6)画像とビデオ

エッジでの画像の最適化:サイズ変更/フォーマットのネゴシエーション('Accept: image/avif、 webp')、 -WebP/AVIF、 DPR-Knowledge。
遅延負荷('srcset'、 'sizes')。
ビデオ:HLS/DASH、断片化されたMP4、嵐を減らすためのオリジンシールド(中央キャッシュ)。
プライベートイメージのサムネイルサービスと署名付きURL。

7)周囲の保証

WAF: OWASPルール、国/ASNブロック、キー付きレート制限(IP+クッキー+トークン)。
DDoS: L3/4スクラブ、L7チェッカー、JSチャレンジ/回転木戸。
プライベートリソース(ビデオ/レポート)の署名付きURL/Cookie: TTL+HMAC/EdDSA。
ジオフェンシングとコンプライアンス(地域の禁止など)。

8)端計算(端の論理)

ケース:
  • キャッシュを壊すことなくパーソナライズ:セグメント(A/B)、地理、エッジ上の言語、およびコンテンツがキャッシュされます。
  • 回答/タイトルの書き換え、リダイレクト、AB分割。
  • トークンベースの認証:JWT署名検証、キーバインディング。
  • Canary by cookie/percent:新しいバックエンドへのトラフィックの一部。

技術の例には、Cloudflare Workers/Durable Objects、 Fastly Compute@Edge、 AWS Lambda@Edgeなどがあります。

9)複数のCDNおよび全体的な周囲

理由:カバレッジ、SLA、コスト、地域の制限、インシデントの分離。
GSLB/トラフィックステアリング:地理/レイテンシー/リアルエラー;複数の視点からの健康チェック。
シングルキー/ヘッダスキーム(サロゲートキー)、同期パージルール。
Origin-shieldは、障害のある起源を「ヒット」しないように、すべてのCDNに共通しています。

10)ログとメトリック

収集:
  • ヒット率(キャッシュ、CDN→エッジ/オリジン)、バイトのヒット率。
  • 遅延p50/p95/p99、コード/ルートによるエラーレート。
  • Originフェッチ:RPS/バイト/エラー(冗長ミスに対する保護)。
  • 地域チャート(POP/ASN/国による)。
  • Observabilityとの統合: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 (origin)-クエリ/ヘッダ正規化

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 Workers-署名されたURL

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

キーアイソレーション(ユーザーごと/トークンごと)なしでプライベートレスポンスをキャッシュしないでください。
Signed Cookie/Headersと'Vary: Authorization'を厳格なコントロールで使用します(そうでなければ-cache-bust)。
安全な代替手段:パブリックレイヤ(キャッシュ)とプライベートインクルージョン(ESI/エッジ構成)を分離します。

14)地理/コンテンツルール

ライセンスの制限:起点をブロックする代わりに、エッジ、プレースホルダを地理的に拒否します。
年齢/規制バナー-エッジ上でレンダリングします(キャッシュをパンチしないでください)。

15)アンチパターン

'no-cache、 no-store'サイト全体→CDN効果の喪失。
不安定なヘッダーの'Vary'(例えば'User-Agent')→cardinality。
各リリースのキャッシュ全体をクリアします。
SWR→storm to originのない短いTTL。
パーソナルページは、セグメンテーション/トークンキーなしでキャッシュされます。
origin-shieldの欠如→複数の並列ミス。

16)実装チェックリスト(0-45日)

0-10日

リソースの分類:不変/HTML/API。
gzip/br、 HTTP/2/3、クエリ正規化、'Surrogate-Key'を有効にします。
SWR/IFEとベースパージを入力します。

11-25日

エッジイメージ最適化(リサイズ/フォーマット)、オリジンシールド。
プライベートメディア、WAF/DDoSプロファイル用の署名付きURL。
ダッシュボード:ヒット率、オリジンフェッチ、POPによるp95。

26-45日

マルチCDNまたはGSLB戦略、周囲のカナリア重量。
segmentation/AB/geo、キーによるソフトパージ用のEdge-compute。
CI/CDの自動温暖化とパージ統合。

17)成熟度の指標

バイトのヒット率≥静的の場合は85%、 HTML/条件付きダイナミクスの場合は60%を≥します。
起源ピーク時に安定したRPS(いいえ「嵐」)。
p95 TTFBは主要地域で≥ 30%削減されました。
インシデントに対する古い回答の%>90%(ユーザーがほとんど気づいていない)。
リリースパイプラインのパージキーの完全な自動化。

18)結論

有効なCDN回路は、キー/TTL/オプション、障害の規律、およびエッジロジックです。SWR/IFE、 origin-shield、メディア最適化、強力なセキュリティ(WAF、署名付きURL)を追加します。メトリクスを標準化し、CI/CDにパージを統合すると、高速で経済的で安定した周囲が得られ、ピーク負荷とブラックスワンに対応できます。

Contact

お問い合わせ

ご質問やサポートが必要な場合はお気軽にご連絡ください。いつでもお手伝いします!

Telegram
@Gamble_GC
統合を開始

Email は 必須。Telegram または WhatsApp は 任意

お名前 任意
Email 任意
件名 任意
メッセージ 任意
Telegram 任意
@
Telegram を入力いただいた場合、Email に加えてそちらにもご連絡します。
WhatsApp 任意
形式:+国番号と電話番号(例:+81XXXXXXXXX)。

ボタンを押すことで、データ処理に同意したものとみなされます。