キャッシュ戦略:マルチレイヤーのパフォーマンス最適化

この記事では、高速なページ読み込みをグローバルに実現するために、各レイヤーでキャッシュをどのように使用しているかを説明します。

問題点:キャッシュされていないリクエストは遅い

キャッシュがない場合、すべてのページ読み込みには以下が必要です:

  • データベースクエリ:製品データ、在庫レベル、価格の取得

  • API呼び出し:配送料金、決済のための外部サービス

  • 計算処理:価格計算、在庫確認

  • 画像読み込み:製品画像、サムネイル

キャッシュは結果を保存して再利用することで、繰り返しの作業を排除します。

解決策:マルチレイヤーキャッシュ

私たちは5つのレイヤーでキャッシュを行います:

  1. ブラウザキャッシュ:ユーザーのデバイスに静的アセットを保存
  2. CDNキャッシュ:CloudFrontエッジロケーションでコンテンツをグローバルにキャッシュ
  3. アプリケーションキャッシュ:Valkeyが頻繁にアクセスされるデータを保存
  4. データベースキャッシュ:データベースの前にValkeyを配置
  5. 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プロンプトキャッシュ

  • 信頼性:複数のフォールバックメカニズム