GH GambleHub

CDNとレイテンシ低減の最適化

1)目標と遅延マップ

レイテンシー=DNS+TCP/TLS+TTFB(サーバー/オリジン/キャッシュ)+コンテンツ配信(RTT ×ボリューム)+クライアントレンダリング。
最適化=RTTの数を減らし、バイト数を減らし、計算/キャッシュをユーザーに近づけます。

2) CDNアーキテクチャ

Anycast POPは、ニアエンドのBGPルーティングノードです。
階層型キャッシュ/起源シールド-起源のミス嵐を軽減する「傘」中間層。
地理/地域ルーティング-テナント/管轄の拘束力(データ主権、ライセンス)。
フェイルオーバー-バックアップ元/地域、健康サンプル、および高速スイッチ。

3)キャッシュ: キー、ヘッダー、戦略

3.1キャッシュキー

デフォルトは'scheme+host+path+?query'。
必要なパラメータだけを追加します('?v='、'?lang='、'?テナント=')。残りはignore-paramsです。
'Vary'-最小:'Accept-Encoding'、 'Accept-Language'(必要に応じて)、'Authorization'はキャッシュを壊します。

3.2ポリシー

Public statics: 'Cache-Control: public、 max-age=31536000、 immutable'+rev(名前のハッシュ)。
ハーフダイナミクス(ディレクトリ、ルール、FAQ): 's-maxage=300、 stale-while-revalidate=600、 stale-if-error=86400'。
API-GET: ETag/Last-Modified、 'SWR/SIE'を使用して、結合を有効にします(ホットキーの1つのリクエスト)。
プライベート:個人的な応答-エッジコンピューティング(ESI/kv)またはテナントキャッシュごとに周囲に。

3.3アンチストーム

Request coalescing-同時ミスリクエストを折りたたみます。
Serve-stale-原点が失敗したときに古いオブジェクトを与えます。
バックグラウンドの再検討-バックグラウンドで更新。

4) HTTP/2-3、 TCP/TLSおよび早期リターン

HTTP/2: multiplexのヘッダー圧縮;'max concurrent stream'、大きなヘッダを制限します。
HTTP/3 (QUIC):モバイル/ハイロスTTFBの大幅な減少。Initial-rapidsとRetryに注目してください。
TLS 1。3: 1-RTT握手;OCSPのステープル;HSTS。
0-RTT: idempotent 'GET'とリプレイリスクが考慮されている場合のみ。
103初期ヒント:重要なリソースの初期'Link: rel=preload'。
Preconnect/DNS-prefetch: '<link rel="preconnect" href="https ://cdn。例「>」。

5)エッジコンピューティングと「ファインパーソナライゼーション」

エッジ:タイトルの国勢調査、地理/テナントの固定、A/Bマーキング、起源を求めることなく簡単にパーソナライゼーション。
ルール:POPノードにPIIを保存しないでください。キャッシュアグリゲート/パブリックデータのみ。

6)メディアとフォーマットの最適化

画像:WebP/AVIFへの自動変換、エッジのサイズ変更、'srcset/sizes'、 'lazyload'。
圧縮:テキスト用のBrotli (HTML/CSS/JS/JSON)、 gzipフォールバック。
ビデオ:HLS/DASH、 CDNセグメントキャッシュ、'preload=metadata'、ポスター。
フォント:subset+'font-display: swap';長いキャッシュを持つホスト。
重要なCSS:インライン最初の画面;残りは非同期です。

7) APIパターンとキャッシュ

Idempotent GET-リクエストキー(データバージョンを含む)でキャッシュします。
ETag:強力なペイロードhash+'If-None-Match'。
「キャッシュコントロール」クライアントと区別するためのサロゲートコントロール(CDN固有)。
署名されたURL-プライベート静的/メディア用。
GraphQL:操作/変数によってキーキャッシュを正規化します。部分キャッシュ/リゾルバーキャッシュを使用します。
WebSockets:リアルタイムの場合-メッセージの短縮、圧縮(permessage-deflate)、 WSシャードの位置をユーザーに近づけます。

8)構成例

8.1 NGINX (origin: we cache API-GET)

nginx
We give SWR and ETag location/api/v1/catalog/{
proxy_cache api_cache;
proxy_cache_key "$scheme$request_method$host$uri$is_args$args";
proxy_cache_valid 200 5m;
proxy_cache_use_stale updating error timeout http_500 http_502 http_503 http_504;
add_header Cache-Control "public, s-maxage=300, stale-while-revalidate=600, stale-if-error=86400";
add_header ETag $upstream_http_etag;
proxy_ignore_headers Set-Cookie; # do not break the Set-Cookie proxy_hide_header cache;
proxy_pass http://catalog;
}

8.2 Fastly VCL (SWR、合体、クッキー無視)

vcl sub vcl_recv {
set req. hash_ignore_busy = true;   # coalescing if (req. url. qs ~ "^(?!.(lang    v)=)") { remove req. url. qs; }
if (req. http. Cookie) { remove req. http. Cookie; }
}

sub vcl_backend_response {
set beresp. ttl = 300s;
set beresp. stale_if_error = 86400s;
set beresp. stale_while_revalidate = 600s;
if (beresp. http. Set-Cookie) { unset beresp. http. Set-Cookie; }
}

8.3 Cloudflare(トランスフォームルール、キャッシュルール、初期のヒント------)

json
{
"cache_rule": {
"if": "http. request. uri. path matches \"/assets/.\"",
"action": {"cache": {"eligibility":"eligible", "ttl": 31536000}}
},
"transform_rule": {
"set_headers": [{"name":"Cache-Control","value":"public, s-maxage=300, stale-while-revalidate=600"}]
},
"early_hints": {"enable": true}
}

9)モバイルネットワークと「不安定」インターネット

積極的にHTTP/3を使用します。クリティカルパスのサイズを小さくします(HTML+クリティカルCSS <14 KB)。
優先H2/H3:優先順位付け(後でHTML→CSS→JS→メディア)。
jitterを使用したポリシーの再試行、APIのためのidempotency。
サイズ予算とバンドル:コード分割、遅延JS、未使用のCSS/JSを削除します。

10)観察可能性およびSLO

RUM: 地域/ASN/テナントによるTTFB、 LCP、 INP、 CLS;p95/p99ディストリビューション。
合成:POP-sによる制御ルート「/health/cdn「。
キャッシュメトリック:全体とキーごとのヒット率;起源のフェッチ率;貯蓄を結合します。
アラート:ヒット比ドロップ、オリジン出力の増加、H3-fraction劣化、シールドあたり5xx。

11) iGaming/Financeの詳細

ゲームカタログ/オッズ: ショート's-maxage'+SWR;region-aware ключ ('tenant' region 'lang')

イベントピーク(マッチ、描画):キャッシュのウォーミング(プリウォーム)、重いパーソナライゼーションの「凍結」、ミラーソース。
Payment/Cabinet:非公開ではなく、H3+edge-TLSとclose regionを介して加速します。
管轄区域:地域ごとの分割ドメイン/パス;'Vary: X-Region'コントロール。

12) Antipatterns

'Vary:'すべてに;キャッシュキーは不要なCookie/ヘッダーによって異なります。
短い起源の失敗のためのSWR/SIE→の黒いスクリーンの欠如。
タグ/キーでポイント障害の代わりにキャッシュを「全体」クリアします。
nameリビジョンがなく'max-age=0'のリソース。
publicが与えられていても'Authorization'のグローバルdeny-cache。
合体→起源の嵐の欠如。
POP上の早期の「重い」パーソナライゼーション。

13) Prod Readinessチェックリスト

  • Anycast POP+階層型/シールド;ヘルスチェックとオリジンフェイルオーバー。
  • キャッシュキーは最小です。不要なクエリ/クッキーを無視します。「サロゲートコントロール」。
  • SWR/SIEが有効になり、アクティブに結合します。エラーのserve-stale。
  • HTTP/3が有効になっています。TLS 1。3;103初期ヒントは重要なリソースに設定されています。
  • 画像:AVIF/WebP、リサイズオンエッジ;歌詞のためのブロトリ。
  • API-GET-ETag/Last-Modified;idempotency/retreats;プライベートプロファイルをキャッシュしないでください。
  • 静的ドメインへの事前接続;critical CSSインライン。
  • メトリクス:ヒット率、origin-egress、 TTFB/LCP p95、 H3-share、地域別/テナント別。
  • イベント前にウォームアッププランをキャッシュする。ポイント障害(タグ)。
  • /keys/TTLドキュメントを変更します。インシデントのプレイブック(ヒット率ドロップ)。

14) TL;DR(ドクター)

階層型/シールド+適切なキャッシュキー+SWR/SIE+合体。HTTP/3/TLS 1をオンにします。3、103の初期ヒントと事前接続を使用します。エッジ、インラインクリティカルCSSでメディアを圧縮して変換します。API-ETagの場合、きちんとした'Vary'、 idempotency、そして合理的なキャッシュ'GET'。ヒット比、TTFB/LCP p95、オリジンエグレスを測定し、ピーク時にキャッシュを事前にウォームアップします。

Contact

お問い合わせ

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

統合を開始

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

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

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