コンテンツにスキップ

キャッシュ戦略まとめ

本ドキュメントは、Storefront / Vendure / WordPress 間のキャッシュ方針を整理したものです。

概要

  • Storefront (Next.js): fetchrevalidate でデータキャッシュを管理
  • Vendure: Redis があれば Redis キャッシュ、なければ in-memory
  • WordPress (WPGraphQL): サーバー側のキャッシュは未実装(Storefront 側でキャッシュ)

Storefront (Next.js) のデータキャッシュ

WordPress 連携のキャッシュ設定

種別 取得元 キャッシュ 設定箇所
ストア設定(OGP含む) WordPress 24時間 (revalidate: 86400) apps/storefront/src/lib/cms/wordpress/store-settings.ts
メニュー WordPress 1時間 (revalidate: 3600) apps/storefront/src/lib/cms/wordpress/menus.ts
お知らせ一覧 WordPress 1時間 (revalidate: 3600) apps/storefront/src/lib/cms/wordpress/announcements.ts
お知らせ詳細 WordPress キャッシュなし (no-store) apps/storefront/src/lib/cms/wordpress/announcements.ts
キャンペーン一覧 WordPress 1時間 (revalidate: 3600) apps/storefront/src/lib/cms/wordpress/campaigns.ts
Heroスライド(バナー) WordPress 1時間 (revalidate: 3600) apps/storefront/src/lib/cms/wordpress/hero-slides.ts
商品リッチ説明 WordPress 6時間 (revalidate: 21600) apps/storefront/src/lib/cms/wordpress/products.ts
固定ページ WordPress キャッシュなし (no-store) apps/storefront/src/lib/cms/wordpress/pages.ts

OGP 反映

  • OGP は WordPress のストア設定を参照して generateMetadata で反映する
  • 実質のキャッシュは ストア設定の revalidate: 86400 に依存
  • 設定箇所: apps/storefront/src/app/(site)/layout.tsx

Vendure のキャッシュ

  • Redis が利用可能な場合は Redis を使う
  • Redis 未設定の場合は in-memory キャッシュ
  • 設定箇所: apps/vendure-server/src/vendure-config.shared.ts

WordPress (WPGraphQL)

  • 連携は Vendure の WordPress プラグイン経由
  • WPGraphQL 側の結果キャッシュは未実装
  • 設定箇所: packages/plugins/src/cms-integration/wordpress/wordpress.service.ts

即時反映の方針(未実装)

  • WordPress 更新時に Storefront の revalidateTag を叩く仕組みを追加すれば、長いキャッシュでも即時反映できる