Entwicklerdokumentation

CDN

Woher das JavaScript-SDK ausgeliefert wird, die zwei Pfadformen und ihre Cache-Lebensdauern, SRI-Hashes und wie Releases Ihre Seite erreichen.

Das JavaScript-SDK wird von https://cdn.bookdineplay.com ausgeliefert. Jedes Release veröffentlicht dieselbe Datei unter zwei Pfaden mit unterschiedlichen Zusagen: eine exakte Version, die sich nie ändert, und ein Alias der Hauptversionslinie, der immer auf das neueste Release dieser Linie zeigt.

Die zwei Pfade

Pfad Inhalt Cache Integritäts-Hash
sdk/<version>/bookdineplay.js genau dieses Release, für immer ein Jahr, unveränderlich (max-age=31536000, immutable) daneben veröffentlicht als sdk/<version>/sri.txt
sdk/v<major>/bookdineplay.js das neueste Release dieser Hauptversionslinie fünf Minuten (max-age=300) keiner – der Inhalt ändert sich absichtlich

Die aktuelle Linie ist 0.x, der Alias also sdk/v0/bookdineplay.js. Erscheint eine 1.0.0, kommt sdk/v1/ hinzu und sdk/v0/ liefert weiter das letzte 0.x-Release – ein Alias springt nie auf eine neue Hauptversion.

Welchen Pfad verwenden

  • Den Alias, wenn Sie Korrekturen ohne Änderung an Ihrer Seite wollen. Der Schnellstart und das WordPress-Plugin verwenden ihn. Schlimmster Fall nach einem Release: fünf Minuten Besucher auf der vorherigen Version.
  • Eine exakte Version, wenn Ihre Sicherheitsrichtlinie byte-genaues Pinning verlangt oder Sie ein Theme gegen ein Release getestet haben und es dabei bleiben soll. Sie aktualisieren, indem Sie das Tag ändern.

Eine exakte Version festlegen

Kopieren Sie den Hash der Version aus sdk/<version>/sri.txt – er hängt auch am GitHub-Release – und ergänzen Sie ihn als integrity-Attribut:

<script
  src="https://cdn.bookdineplay.com/sdk/<version>/bookdineplay.js"
  integrity="<hash from sdk/<version>/sri.txt>"
  crossorigin="anonymous"></script>

Der Hash ist sha384-…, berechnet über genau die hochgeladenen Bytes, sodass er nie von dem abweichen kann, was das CDN ausliefert. crossorigin="anonymous" ist nötig, damit der Browser ihn prüft. Setzen Sie nie ein integrity-Attribut auf die Alias-URL: Das erste Release nach Ihrem ändert die Bytes, die Prüfung schlägt fehl und das Widget lädt stillschweigend nicht mehr.

Versionen und Releases

Jedes Release von BookDinePlay taggt vX.Y.Z auf GitHub und veröffentlicht das SDK auf dem CDN, BookDinePlay.Sdk und BookDinePlay.Shared auf NuGet und das WordPress-Plugin-Zip am Release. Ein Prerelease wie 0.7.0-beta.1 erscheint nur unter seinem exakten Versionspfad – es bewegt nie einen Alias. window.BookDinePlay.version ist die Versionszeichenkette des SDK.

Cross-Origin- und Cache-Details

  • Antworten unter /sdk/ tragen Access-Control-Allow-Origin: *, sodass gepinnte Ladevorgänge mit crossorigin von jeder Website funktionieren.
  • Das CDN liegt hinter Azure Front Door; die Cache-Lebensdauern oben sind das, woran sich Ihr Browser und Zwischen-Caches halten. Ein Deploy des Alias ist innerhalb dieser fünf Minuten überall sichtbar.
  • Nichts auf dem CDN ist personalisiert oder an einen Schlüssel gebunden: Es liefert pro Pfad eine statische Datei, und Ihr veröffentlichbarer Schlüssel geht nur je an api.bookdineplay.com.

Nächste Schritte