GH GambleHub

テクノロジーとインフラストラクチャ→CDNとコンテンツキャッシュ

CDNとコンテンツキャッシュ

1) CDNとキャッシュの理由

CDN (Content Delivery Network)は、RTTとTTFBを削減し、起源をオフロードし、P95/P99の尾を安定させます。iGaming/Fintechの場合、次のとおりです:
  • カタログ、アセット、プロモーション、メディアのファーストファーストバイト。
  • 起源の容量の爆発的な成長のないピーク安定性(トーナメント/イベント)。
  • 排出の節約と予測可能なコスト。
  • ジオコントロール(規制、コンテンツライセンス)。

2)基本的なキャッシュ戦略

2.1キャッシュできる回答

静的:JS/CSS/フォント/アイコン-長いTTL (30-365日)+名前のファイルハッシュ。
セミスタティック:ゲームカタログ、バナー、設定-数分から数時間までのTTL+'stale-while-revalidate'。
API GET/HEAD:ディレクトリ、価格、リードボード-正しいキーを持つ短いTTL (5-120秒)。

2.2タイトル

'Cache-Control: public、 max-age=600、 stale-while-revalidate=300、 stale-if-error=600'

'ETag'/'Last-Modified'を再検証する。
'Surrogate-Control'/' CDN-Cache-Control'(プロバイダがサポートしている場合)。
プライベートデータの場合:'Cache-Control: no-store' ('no-cache'だけではありません)。

2.3キャッシュキー

Base:レスポンスに影響を与えるメソッド+URL path+クエリパラメータ。
追加:'Accept-Encoding' (gzip/br)、 'Accept' (json/webp/avif)、ロケール('Accept-Language')、コンテンツが影響を受ける場合は地域/通貨。
キーの誤ったヘッダー(クッキー、トレースID)を避けます。


3)管理とクッキーの変更

'Vary: Accept-Encoding、 Accept-Language'は必要最小限のセットです。
キャッシュされたパスのCDNクッキー除去:ホワイトリスト以外のすべてを削除します(例:ABフラグ)。
キャッシュされたコンテンツ以外のサブドメイン/パスにセッション識別子を転送します。


4) TTLと鮮度パターン

不変静的:'Cache-Control: public、 max-age=31536000、 immutable'+ファイル名のバージョン。
SWRO/SIE: 'stale-while-revalidate'および'stale-if-error'-起源の問題におけるUX抵抗。
パーティション化されたTTL:ゲームのルートリスト-30-60秒;ゲームカード-5-10分;バナー-30分。
APIミックス:基本的な参考書-5-30分;通貨/限度-1-5分;リードボード-2-15秒。


5)階層型キャッシングの起源シールド

階層型/地域キャッシュ:エッジを通過するリクエストは、オリジンではなく地域の「シールド」で戦われます。
利点:起源のより少ないミス、「嵐」、より安い出口を滑らかにします。
地理的に最も交通密度の高いボード(EU、 TR、 BR、 LATAM)をグループ化します。


6)障害とウォームアップ

Purge by path/prefix/tag:タグはバッチクリーニング(カタログリリース、プロモーションキャンペーン)に便利です。
柔らかいパージ(恵み):コンテンツを時代遅れにマークしますが、新しいものが到着する前にそれを放棄します。
ウォームアップ(prewarm):リリース中/トーナメント前のシナリオ:人気のあるパスのポーリング、スプライトの生成、写真のバリエーション。
カナリア不能:部分的にクリーン、メトリック/エラーを検証し、展開します。


7)端の規則および機能(労働者/機能)

レスポンスの上書き:キャッシュヘッダーの追加、'Vary'の正規化、Cookieの削除。
Geo/ASNルーティング:リダイレクト、国によるロケール/通貨。
保護されたメディア/オブジェクトの署名されたURL/ヘッダー。
Edge-ABテスト:ライト、起源の負荷の増加無し(静的/半静的のためにだけ)。
Edge-compute:ライトウィジェット/パーソナライゼーションはレンダリングしますが、ホットな支払いパスではありません。


8)画像とビデオ

8.1枚の写真

Autoconversion: WebP/AVIFの場合"Accept'クライアント;'Vary: Accept'。
エッジのサイズ変更:パラメータ'w/h/fit/quality';プリセット(カード、バナー、プレビュー)を準備します。
スプライトとSVGの最適化、前面の遅延負荷。

8.2ビデオ/ストリーム

短いセグメント(2-4秒)のHLS/DASH、重複プレイリスト。
最寄りのセグメントと'stale-if-error'をプリロードします。
ライブベットの場合-TTFBカットの地域シールドにセグメントを保持します。


9) CDN経由のAPI

キャッシュ可能なGET: 'Cache-Control'と正しいキー(locale/currency/region)を追加します。
条件付きGET: 'ETag'/'If-None-Match'はバイトとTTFBを削減します。
POST/PUT:キャッシュされていません;明示的なルールとidempotentセマンティクス(まれに正当化される)の下でのみPOSTレスポンスをキャッシュすることができます。
エッジでのレート制限/WAF:ボット/異常を切断して尾を減らします。


10)セキュリティ、アクセス、コンプライアンス

WAF/ボット管理:署名、行動ヒューリスティクス、ボーナススキャナーに対する保護。
メディアおよびプライベートダウンロード用の署名付きURL/ヘッダー。
mTLS起源のIP allow-list。
GDPR/PII/PCI:機密データをキャッシュしないでください。個人的な応答を持つAPI-'no-store'。
市場の規制要件に応じてエッジでジオフィルタ/インターロック。


11)ネットワークおよび議定書

CDN、 TLS再開、OCSPステープリングのHTTP/2/3を有効にします。
テキストフォーマットのためのBrotli (br)、 gzip-フォールバック。
TCP/QUICチューニング(プロバイダ)→特にモバイルネットワークにおける損失の影響が少ない。


12) CDNのための観察可能性そしてSLO

メトリック(エッジとシールド):
  • Hit Ratio(全体と接頭辞による)、Origin Offload。
  • 地域/ASNによるTTFB P50/P95/P99。
  • ステータスコード(エッジ/オリジン)によるスループット/エラー。
  • 待ち時間をパージします。
  • イメージ変換の遅延(エッジのサイズ変更を使用している場合)。
SLOの例:
  • ゲームカタログ:TTFB P95 ≤ 150ミリ秒、オフロード≥ 85%。
  • メディア(画像):ヒット率≥ 90%、変換エラー<0。1%.
  • API GET 「directories」: TTFB P95 ≤ 200ミリ秒、Revalization Hit ≥ 60%。

13) FinOps: キャッシュ値

Offload=origin→direct$の利点を持つegressより小さい。
階層型+シールドカット「嵐」とMISS負荷。
画像最適化(AVIF/WebP/サイズ変更)により、トラフィックを最大限に節約できます。
P95レスポンスウェイトと「高価なMISS」(バイト×数×領域)を制御します。


14)構成とルール(フラグメント)

14.1原点タイトル(Nginx)

nginx статика с версионированием location ~ \.(css    js    woff2)$ {
add_header Cache-Control "public, max-age=31536000, immutable";
}

полустатика каталога location /catalog/ {
add_header Cache-Control "public, max-age=300, stale-while-revalidate=600, stale-if-error=600";
add_header Vary "Accept, Accept-Language";
}

14.2エッジ上のキー正規化(擬似)

js addRule((req) => {
// очищаем шум req.cookies.clearExcept(['ab', 'locale']);
// ключ = method+path+критичные query key = `${req.method}:${req.path}?lang=${q.lang}&currency=${q.cur}`;
req.setCacheKey(key);
req.setVary(['Accept', 'Accept-Encoding', 'Accept-Language']);
});

14.3署名されたURL(アイデア)


/media/{path}?exp=1735707600&sig=HMAC_SHA256(secret, path    exp    ip)
На edge: проверка exp и подписи, опционально привязка к IP/ASN.

15)解放および操作プロセス

リリースフック:展開後のタグ/プレフィックスによる自動パージ。
Prewarm-list:トラフィック/変換のトップパス-事前にウォームアップします。
カタログTTLマトリックス:製品/マーケティングに同意。
インシデント:MISS/TTFBの成長で-古い場合エラーをオンにし、原点が安定するまでエッジで高価な変換を「撮影」します。


16)実装チェックリスト

1.コンテンツマップ(静的/半静的/API)とTTL行列。
2.'Cache-Control'、 'ETag/Last-Modified'、 'Vary'を修正します。
3.「ノイズ」のないキャッシュキー、クッキーストリッピング、ホワイトリスト。
4.階層型キャッシュ+地域別のオリジンシールド。
5.タグ/プレフィックス、ソフトパージ、プレウォーム手順でパージします。
6.エッジ関数:正規化、ジオロジック、署名付きURL。
7.画像最適化(WebP/AVIF/リサイズ)、ビデオ用HLSセグメント。
8.WAF/ボットフィルタ、ジオ制約、原点へのmTLS。
9.SLOボード:TTFB、ヒット比、オフロード、変換エラー。
10.FinOpsレポート:$/GB、親愛なるMISS、エグレスリーディングリージョン。


17)アンチパターン

'no-cache'はどこでも「念のため」です。
キャッシュキーには、すべてのクエリ/ヘッダー→ゼロヒット比が含まれます。
Cookie依存のレスポンス(キャッシュ全体を壊します)。
各リリースのCDN全体をクリアします。
ピーク時のエッジ上の長い同期変換。
'stale-while-revalidate'/'stale-if-error'がない-UXの急激な劣化。
「no-store」のない個人データ/応答のキャッシュ。


18) iGamingコンテキスト/フィンテック: 実用的なノート

トーナメント/イベント:リーダーボード上の短いTTL (2-10秒)+SWR;プレウォームゲームカードとバナー。
ジオライセンス:エッジロック/リダイレクト国、キャッシュキーの通貨/ロケール。
プロモーションとクーポン:バナー/条件をキャッシュしますが、個人的な制限はありません。
責任あるゲーム:ポリシー/リミットページ-SWRで半静的。個人データ-'no-store'のみ。
PSP/KYC Webhook: CDN経由ではなく、キャッシュなしで、ハードタイムアウトでエッジパススルーです。


[結果]

強力なCDN戦略は、正しいヘッダーとキャッシュキー、MISS削減のための階層型/シールド、正規化と保護のためのエッジ機能、クイックリリースのための障害/ウォーミング、SLOとFinOpsによる観測性です。これらの原則を遵守することで、あなたはピークに耐え、ユーザーとパートナーのためにTTFBを予測可能にする高速かつ経済的な境界を持っています。

Contact

お問い合わせ

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

統合を開始

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

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

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