إصدارات CDN
يتم تقديم كل أصل embed من مسار 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؛ ثم يطلب بدوره إصدار v1 لكل حزمة منتج.
ما هو v1 فعليًا
v1هو اسم مستعار لعقد الإصدار الرئيسي، وليس تثبيتًا لإصدار بناء محدد. لا توجد مسارات patch أو content-hash ضمن/embed/v1/*. الملف الذي يقدمه عنوان URL هذا هو إصدار v1 الحالي، ويتم نشره في مكانه؛ ولا يوجد/embed/v1.2.3/…يمكنك التثبيت عليه.- يتم إصدار الإصلاحات المتوافقة مع الإصدارات السابقة ضمن
/embed/v1/— وتحصل عليها تلقائيًا. ويشمل ذلك إضافات السلوك (أحداث SSE مستقرة جديدة، وأساليب handle جديدة) — وقاعدة التوافق هي أن العملاء يجب أن يتجاهلوا إضافات wire غير المعروفة وأن أساليب handle غير المدعومة تعمل كـ no-op مع تحذير. - أي تغيير كاسر للتوافق في wire/postMessage يصدر ضمن إصدار رئيسي جديد بجانب v1:
/embed/v2/kaleidr.js(+/embed/v2/<product>.js). ويستمر عنوان URL المثبت علىv1في العمل دون تغيير؛ ويمكنك الانتقال وفق جدولك الخاص عبر تحديث المسار.
يتم إصدار عقد SSE wire بالطريقة نفسها في
/inference-api/b2b/v1/* — ولا يظهر v2 إلا عند وجود تغيير كاسر
في stream.
التخزين المؤقت
يتم تقديم الحزم مع Cache-Control: public, max-age=300 وكل
عملية نشر تبطل توزيع CloudFront — لذلك يكون الانتشار العملي
حوالي 1–5 دقائق عند edge، بالإضافة إلى ما يصل إلى 300 ثانية إضافية لمتصفح
سبق أن خزّن الملف السابق. هذا سريع للإصلاحات؛
وهو أيضًا السبب في عدم ضرورة fingerprint أو التخزين طويل الأمد لهذه
الملفات محليًا دون خطة لكيفية استبدالها.
الاستضافة الذاتية
توجيه kaleidr.js فقط إلى الأصل الخاص بك لا يعزلك
عن CDN الخاص بـ Kaleidr — إذ يستمر loader في جلب الحزم الكسولة
(chat.js, editor.js, viewer.js, tile.js) من
cdn.kaleidr.com وقت mount. وللاستضافة الذاتية الكاملة، تجاوز base الخاص بالـ loader
واعكس الملفات الخمسة جميعها في {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-base،
viewer-base، و
tile-base.