warpkit

Dokumentation

Warpkit anbinden und steuern

Warpkit sitzt als Cloudflare Worker vor deinem Shop. Diese Seite beschreibt den Ablauf einer Anfrage, die Einstellungen eines Mandanten und die Schnittstellen.

Ablauf einer Anfrage

  1. Einordnen. Aus Tag, Netzbereich und User-Agent entsteht ein Hash, der den Besucher der beschleunigten oder der Kontrollgruppe und den Varianten laufender Experimente zuordnet. Der Hash existiert nur im Arbeitsspeicher.
  2. Gerüst suchen. Liegt für die URL ein Gerüst im Edge-Cache und steht die URL nicht als geändert im Bloom-Filter, wird es sofort gesendet.
  3. Server fragen. Gleichzeitig geht die Anfrage mit den Cookies des Besuchers an deinen Server. Aus dessen Antwort schneidet Warpkit die persönlichen Bereiche heraus und hängt sie an den laufenden Datenstrom an.
  4. Vergleichen. Weicht das Gerüst der Live-Antwort vom gespeicherten ab, ruft Warpkit die Seite erneut ohne Cookies ab, ersetzt das Gerüst und trägt die URL in den Bloom-Filter ein.

Ist kein Gerüst vorhanden, erhält der Besucher die normale Antwort deines Servers. Im Hintergrund wird die Seite ohne Cookies abgerufen und für den nächsten Aufruf vorbereitet.

Antwort-Header x-warpkit

WertBedeutung
hitGerüst aus dem Edge-Cache, persönliche Bereiche im selben Datenstrom
missKein Gerüst vorhanden, Antwort kommt vom Server, Cache wird aufgewärmt
specVorab-Ladung (Prefetch oder Prerender), ohne Kontakt zu deinem Server
swGerüst für den Gerätecache des Service Workers
controlKontrollgruppe, bewusst ohne Beschleunigung
passAusgeschlossener Pfad oder nicht cachebare Seite
fail-openFehler in Warpkit, Anfrage ging unverändert an deinen Server

Anbindung

Full-Edge (Early Access)

Die Shop-Domain wird als Custom Hostname bei Warpkit hinterlegt und per CNAME auf Warpkit gerichtet. Das TLS-Zertifikat stellt Cloudflare aus. Dein Server bleibt unverändert und muss nur weiterhin unter einer eigenen Adresse erreichbar sein, die als origin eingetragen wird.

  1. Seite über den Selbsttest analysieren. Das Ergebnis enthält eine Startkonfiguration.
  2. Mandant anlegen (siehe API) und Bereiche ergänzen, die nur eingeloggt oder mit gefülltem Warenkorb sichtbar sind.
  3. CNAME setzen. Mit controlShare: 0.5 starten und im Dashboard prüfen, dass „Abweichungen außerhalb der Bereiche“ bei 0 bleibt.

Connector (in Vorbereitung)

Für Shops hinter einem fremden CDN ist eine Anbindung über ein Skript-Tag und eine Service-Worker-Datei vorgesehen. Sie wirkt ab dem zweiten Seitenaufruf und ist noch nicht verfügbar.

Einstellungen eines Mandanten

FeldStandardBedeutung
origin–Adresse deines Servers, nur https
dynamic[]CSS-Selektoren der persönlichen Bereiche. Ihr Inhalt wird nie gespeichert.
exclude/cart, /checkout, /account …Pfade, die immer unverändert durchgereicht werden
ignoreParamsutm_*, gclid, fbclid …Query-Parameter, die den Cache-Schlüssel nicht verändern
vary[]Header, nach denen dein Server unterschiedliches HTML liefert, oder device für mobil/Desktop
ttl86400Maximale Lebenszeit eines Gerüsts in Sekunden
controlShare0.1Anteil der Besucher ohne Beschleunigung (Kontrollgruppe), 0 bis 1
assignmentstatelessstateless: Zuordnung per Hash, nichts wird auf dem Gerät gespeichert. cookie: zufällige Gruppennummer in einem First-Party-Cookie, 30 Tage stabil.
experiments[]Edge-A/B-Tests: id, selector, variants (name, optional html, attrs), weights
speculationaktivhover: prefetch oder prerender; minProbability, minSamples, maxPrerender steuern das Vorab-Rendern vorhergesagter Seiten
serviceWorkerfalseGerätecache für Gerüste. Abschalten wirkt als Notschalter für alle Geräte.
stripCommentstrueHTML-Kommentare aus dem Gerüst entfernen

Markierungen im HTML deines Shops

Schalter in der URL

API

Alle Aufrufe gehen an https://warpkit.co und erwarten Authorization: Bearer <Schlüssel>. Der Mandantenschlüssel wird beim Anlegen einmalig ausgegeben.

AufrufZweck
GET /api/t/{id}/stats?days=7Messwerte, Trefferquote, Vorhersagen, Testergebnisse
GET /api/t/{id}/configAktuelle Einstellungen und Hostnamen
POST /api/t/{id}/purge{"paths": ["/produkt/x"]} markiert URLs als geändert, {"all": true} verwirft alle Gerüste
POST /api/admin/tenantsMandant anlegen oder ändern (nur Betreiber)
GET, DELETE /api/admin/tenants/{id}Mandant lesen oder löschen (nur Betreiber)
curl -X POST https://warpkit.co/api/t/mein-shop/purge \
  -H "Authorization: Bearer wk_…" \
  -H "Content-Type: application/json" \
  -d '{"paths": ["/produkt/regenjacke"]}'

Bekannte Grenzen

Der Selbsttest

Der Selbsttest ruft die angegebene Seite zweimal mit dem User-Agent WarpkitAnalyzer/1.0 ab, einmal ohne und einmal mit den Cookies der ersten Antwort. Er führt keine Skripte aus, folgt keinen weiteren Links und speichert weder Adresse noch Inhalt.