キャッシュ戦略:マルチレイヤーのパフォーマンス最適化
この記事では、高速なページ読み込みをグローバルに実現するために、各レイヤーでキャッシュをどのように使用しているかを説明します。
問題点:キャッシュされていないリクエストは遅い
キャッシュがない場合、すべてのページ読み込みには以下が必要です:
-
データベースクエリ:製品データ、在庫レベル、価格の取得
-
API呼び出し:配送料金、決済のための外部サービス
-
計算処理:価格計算、在庫確認
-
画像読み込み:製品画像、サムネイル
キャッシュは結果を保存して再利用することで、繰り返しの作業を排除します。
解決策:マルチレイヤーキャッシュ
私たちは5つのレイヤーでキャッシュを行います:
- ブラウザキャッシュ:ユーザーのデバイスに静的アセットを保存
- CDNキャッシュ:CloudFrontエッジロケーションでコンテンツをグローバルにキャッシュ
- アプリケーションキャッシュ:Valkeyが頻繁にアクセスされるデータを保存
- データベースキャッシュ:データベースの前にValkeyを配置
- AIキャッシュ:DeepSeekがシステムプロンプトをキャッシュ
キャッシュレイヤー
ブラウザキャッシュ (CloudFront)
CloudFrontは適切なTTLでブラウザキャッシュを提供します:
-
画像:長いTTL(24-72時間)
-
CSS/JS:キャッシュ破棄によるバージョン管理
-
APIレスポンス:短いTTLまたはキャッシュなし
CDNキャッシュ (CloudFront)
CloudFrontはエッジロケーションでコンテンツをキャッシュします:
アプリケーションキャッシュ (Valkey)
Valkeyはインメモリキャッシュを提供します:
データベースキャッシュ
Valkeyはデータベースの前に配置されます:
-
製品データ:パフォーマンスのためにキャッシュ
-
部品コスト:価格計算のためにキャッシュ
-
SKUリスト:製品リストのためにキャッシュ
-
画像マニフェスト:画像読み込みのためにキャッシュ
AIキャッシュ (DeepSeek)
DeepSeekはプロンプトキャッシュを提供します:
-
システムプロンプト:効率化のためにキャッシュ
-
キャッシュヒット:トークン使用量を削減
-
キャッシュミス:新しいコンテンツを生成
翻訳キャッシュ
翻訳キャッシュは複数のレイヤーを使用します:
-
Valkey:フレーズテーブルをメモリ内にキャッシュ
-
ファイル:フレーズテーブルをJSONファイルに永続的に保存
-
フォールバック:後方互換性のためのレガシーハッシュベースキャッシュ
キャッシュ無効化
以下の場合にキャッシュを無効化します:
-
製品更新:製品キャッシュを無効化
-
在庫変更:在庫数キャッシュを無効化
-
コンテンツ更新:ページキャッシュを無効化
-
翻訳更新:翻訳キャッシュを無効化
キャッシュ構成
Valkeyキャッシュは機能ごとに整理されています:
-
セッション:ユーザー認証状態
-
オートコンプリート:検索候補データ
-
人気クエリ:頻繁に検索される用語
-
フレーズマッピング:フィルター抽出データ
-
部品コスト:価格計算データ
まとめ
私たちのキャッシュ戦略は以下を提供します:
-
マルチレイヤー:ブラウザ、CDN、アプリケーション、データベース
-
効率的:高速なインメモリアクセスのためのValkey
-
スマート:コスト削減のためのAIプロンプトキャッシュ
-
信頼性:複数のフォールバックメカニズム