メインコンテンツまでスキップ

CDN バージョニング

すべての embed asset は major-alias パスから配信されます:

https://cdn.kaleidr.com/embed/v1/kaleidr.js ← the loader (façade)
https://cdn.kaleidr.com/embed/v1/chat.js ← chat bundle
https://cdn.kaleidr.com/embed/v1/viewer.js ← viewer loader
https://cdn.kaleidr.com/embed/v1/editor.js ← editor bundle
https://cdn.kaleidr.com/embed/v1/tile.js ← tile loader

kaleidr.js を固定すると、それが各 product bundle の v1 を順番に要求します。

v1 の実際の意味

  • v1 は major-contract alias であり、build pin ではありません。 /embed/v1/* 配下には patch や content-hash パスは存在しません。その URL が配信するファイルは 現在の v1 build で、その場所に上書き公開されます。 固定可能な /embed/v1.2.3/… は存在しません。
  • 後方互換の修正は /embed/v1/ 配下で配信されます — 自動的に取得されます。 これには動作の追加(新しい安定 SSE event、 新しい handle method)も含まれます — 互換性ルールとして、client は 未知の wire 追加を無視し、サポートされない handle method は warning 付き no-op として扱う必要があります。
  • breaking な wire/postMessage の変更は v1 と並行して 新しい major として配信されます: /embed/v2/kaleidr.js (+ /embed/v2/<product>.js)。固定済みの v1 URL は変更なく動作を続けます。自分のスケジュールで path を上げて 移行できます。

SSE wire contract も同様に /inference-api/b2b/v1/* でバージョニングされます — v2 が登場するのは breaking な stream 変更がある場合のみです。

キャッシュ

bundle は Cache-Control: public, max-age=300 で配信され、すべての publish で CloudFront distribution が invalidation されます。そのため実際の 伝播は edge で約1〜5分、さらに以前のファイルをすでにキャッシュしている browser では最大300秒追加される場合があります。修正の反映としては高速ですが、 同じ理由から、置き換え方法の計画なしにこれらの ファイルを fingerprint したり長期ローカルキャッシュしたりすべきではありません。

Self-hosting

kaleidr.js だけを独自 origin に向けても、Kaleidr CDN から 切り離されるわけではありません — loader は mount 時に lazy bundle (chat.js, editor.js, viewer.js, tile.js)を引き続き cdn.kaleidr.com から取得します。完全に self-host するには loader の base を上書きし、5つすべてのファイル{origin}/embed/v1/ にミラーしてください:

<script>window.__KALEIDR_EMBED_BASE__ = 'https://cdn.example.com';</script>
<script src="https://cdn.example.com/embed/v1/kaleidr.js"></script>

embed が platform API や private tile CDN にも接続する場合は、 それぞれ個別に上書きしてください — api-baseviewer-basetile-base を参照してください。