Skip to content

API-001-10 共有テンプレート warm ​

← API-一覧

概要 ​

日別記事テンプレートの共有データ(daily_link_list + daily_data_kishu_list)を L1/L2 に warm する。HTML は返さず、以降の UI 非同期 REST(API-001-1 等)が L2_HIT できるようにする。

入力(リクエスト) ​

param必須型・制約説明
dateはいYYYY-MM-DD対象日
hallsはい英字スラッグの配列、またはカンマ区切り CSVページ全体のホール一覧(L2 キャッシュキー生成に使用。make_artist_halls_csv と同一集合)

POST ボディは JSON(Content-Type: application/json)を推奨。

出力(レスポンス) ​

成功時 data ​

field型説明
successboolean常に true
warmedboolean常に true(warm 完了)

HTTP ステータス: 200

失敗・エラー条件 ​

条件レスポンス形式
バリデーションエラー{ "success": false, "error": { "message": "..." } }(400)
nonce 不正 / レート制限超過WordPress REST 標準(nonce 不正は 403、レート制限超過は 429)
サーバー内部エラー{ "success": false, "error": { "message": "..." } }(500)

クライアント(JS orchestrator)のフォールバック ​

実装: core_src/View/templates/daily_article_result/daily_article_orchestrator.js。

  • warm POST は 5 秒タイムアウト。超過・ネットワーク断・4xx/5xx 時は console.warn のうえ UI REST を起動する(ページ表示はブロックしない)。
  • warm 失敗時は UI REST 発火前に 200ms 待機し、先頭リクエストが L2 populate しやすくする(完全なスタンピード防止ではない。warm 失敗時は既存挙動と同等の並列 DB_FETCH が起こり得る)。

権限・nonce ​

名前空間共通事項は API-一覧 を参照。本エンドポイントは API-001-1 等と同様、AsyncLoadingHandler + WordPressAsyncLoadingPermissionChecker(nonce + IP レート制限)を使用する。差分は method が POST(GET による prefetch による意図しない warm を避ける)のみ。

レート制限は読み取り系 GET とは別の warm バケット(IP ごと 60 秒 60 回。API-001-10 と API-001-18 で共有)で数え、カウンタを取れないときは拒否する(Issue #3865 / #3938)。詳細は REST API レート制限の IP アドレス取得設定。