データ提供

新鮮度は、リクエストパラメータ。

すべてのデータエンドポイントが freshness(cache | default | live)と max_age(秒)を受け付けます。呼び出しごとに選択できます:安価なキャッシュ読み取りに固定する、プラットフォームの鮮度ウィンドウに任せる、あるいは上流への新規取得を強制する。すべてのレスポンスが、どの層が応答したかと課金額を正確に報告します。

3つのストラテジー、1つのパラメータ

freshness=cache

プラットフォームキャッシュのみから応答します — このモードでは取得パイプラインには構造的に到達しません。

レイテンシ
最速:キャッシュ読み取り 1 回、上流ホップなし。
課金
そのケイパビリティのキャッシュティア Credits — 多くのケイパビリティで基本価格の半額。
ミス時 / 失敗時
404 DATA_NOT_FOUND。上流は呼ばれず、代わりの取得も行われません。

freshness=default

プラットフォームが鮮度ウィンドウに基づいて判断します:新しいキャッシュは直接応答、期限切れエントリは stale として応答しつつ重複排除済みのバックグラウンド更新を実行、いずれもなければ上流から取得します。

レイテンシ
キャッシュヒット:高速。上流取得:上流への往復 1 回(同時呼び出し元で共有)。
課金
キャッシュからの応答(stale+更新を含む)はキャッシュティア、新規取得とエンティティストアのヒットは基本価格。
ミス時 / 失敗時
取得パイプラインへ自動フォールバック — すべてのプロバイダが失敗しない限り(502 UPSTREAM_ERROR)、ミスは見えません。

freshness=live

キャッシュとエンティティストアを完全にスキップし、プロバイダを呼んで最新データを取得し、その後キャッシュに書き戻します。

レイテンシ
毎回上流への完全な往復 — 設計上、最も遅いパスです。
課金
基本価格。料金ルールで live 乗数が設定されているケイパビリティはそれに従います。
ミス時 / 失敗時
live 取得の失敗は 502 UPSTREAM_ERROR を返します — 古いデータを新鮮と偽ることは決してありません。

比較表

項目cachedefaultlive
データソースプラットフォームキャッシュのみキャッシュ → エンティティストア → プロバイダ常にプロバイダ
レイテンシ最速 — 上流ホップなしキャッシュヒット時は低遅延。取得時は上流往復毎回上流往復
課金キャッシュティア Creditsキャッシュ応答はキャッシュティア、取得は基本価格基本価格
ミス時404 DATA_NOT_FOUND上流から取得502 UPSTREAM_ERROR

max_age:呼び出しごとの鮮度ウィンドウ

max_age はキャッシュ/保存エントリの許容年齢(秒)を限定します。優先順位:freshness > max_age > プラットフォーム固有の TTL ウィンドウ。max_age=0 で、今回の呼び出しで取得されていないデータをすべて拒否できます。

GET /v1/x/users/newdev?max_age=300
# serve cache/db entries at most 5 minutes old;
# anything older triggers acquisition (default mode)

すべてのレスポンスが何が起きたかを伝えます

meta.freshness は実効モード、データ年齢(秒)、応答層(cache | db | upstream)、期限切れエントリを stale として応答したかどうかを報告します。meta.billing は課金 Credits とキャッシュヒットの有無を報告します — 事後の推測は不要です。

"meta": {
  "freshness": { "mode": "default", "age_seconds": 781,
                "source_layer": "cache", "stale": false },
  "billing":  { "amount_credits": 100, "cache_hit": true }
}

コンソールの利用台帳は同じ数値を呼び出しごとに分解するので、1 か月のトラフィックを行単位で照合できます。