# Publishing

URL: https://docs.ablyft.com/de/developers/installation/publishing/

> Wie Änderungen in ABlyft deine Visitors erreichen und wie du den Zustand deines Snippets prüfst.



Deine Website lädt eine Snippet-Datei vom ABlyft-CDN. Diese Datei enthält die aktuelle Konfiguration deines Projects:
laufende Experiments, Variations, Pages, Audiences, Goals und Einstellungen. **Publishing** bedeutet, eine neue Version
dieser Datei zu erstellen und auf das CDN hochzuladen. Da die URL gleich bleibt, musst du den Code auf deiner Website nie
ändern.

## Publishing erfolgt automatisch

Du musst nicht manuell veröffentlichen. ABlyft veröffentlicht dein Project, wenn sich etwas Relevantes ändert, zum
Beispiel wenn du:

* Experiments und Variations erstellst, bearbeitest, startest oder pausierst,
* Pages, Audiences, Goals oder Environments änderst (einschließlich Zuweisen und Entfernen),
* Snippet-, Project-, Prerequisite- oder Datenschutzeinstellungen änderst,
* diese Elemente löschst oder wiederherstellst.

Änderungen, die nur interne Zeitstempel betreffen, lösen kein Publishing aus. Das erste Snippet wird erstellt, wenn du das
Project anlegst.

## Was bei einem Publishing passiert

1. Die **Snippet revision** des Projects erhöht sich um eins und **Last published** wird auf die aktuelle Zeit gesetzt.
2. ABlyft generiert das Snippet und lädt es auf das CDN hoch. Wenn du [Sub-Snippets](https://docs.ablyft.com/de/developers/installation/environments/#sub-snippets)
   verwendest, werden auch diese hochgeladen.
3. Deine [Publication Webhooks](https://docs.ablyft.com/de/developers/installation/snippet-settings/#publication-webhooks) werden aufgerufen, falls
   du welche konfiguriert hast.

Das läuft im Hintergrund, einige Augenblicke nach dem Speichern.

## Der Publishing-Indikator

Während ein Publishing läuft, zeigt die obere Leiste einen Button **Publishing …** mit einem Countdown in Sekunden. Fahre
mit der Maus darüber, um "The snippet is being updated (uploading to CDN)" zu sehen.

Der Countdown ist so lang wie die **Cache expiration (ttl)** deines Snippets. Er zeigt, wie lange es dauern kann, bis
Visitors, deren Browser das alte Snippet gecacht hat, das neue erhalten, siehe
[Cache Expiration](https://docs.ablyft.com/de/developers/installation/snippet-settings/#cache-expiration-ttl). Solange der
[Debug-Modus](https://docs.ablyft.com/de/developers/debugging/preview-and-live-log/#debug-mode) aktiv ist, ist das Caching aus und kein Countdown
nötig.

## Zustand deines Snippets prüfen

Unter **Settings → Snippet** findest du:

| Feld                           | Bedeutung                                 |
| ------------------------------ | ----------------------------------------- |
| **Snippet revision**           | Wie oft das Project veröffentlicht wurde  |
| **Last published**             | Datum und Uhrzeit des letzten Publishings |
| **Snippet size (before gzip)** | Größe der Snippet-Datei                   |
| **Sub-Snippets**               | Die Snippets deiner Environments          |

Im Browser gibt `ablyft.get('data')` die `revision` des Snippets zurück, das der Visitor tatsächlich geladen hat, siehe
[`ablyft.get()`](https://docs.ablyft.com/de/developers/reference/javascript-api/get/#data). Ist sie niedriger als die Revision in ABlyft,
verwendet der Browser noch eine gecachte Version.

## Manuell veröffentlichen: Test webhooks

Um zu veröffentlichen, ohne etwas zu ändern, zum Beispiel um einen Webhook-Endpoint zu testen:

1. Gehe zu **Settings → Project Settings** und suche den Abschnitt für Publication Webhooks.
2. Klicke auf **Test webhooks**.
3. Bestätige mit **Yes, publish now**.

ABlyft veröffentlicht das Project dann, als wäre es gespeichert worden, generiert alle Snippets neu und ruft deine
Webhooks auf. Die Felder, die ein Webhook erhält (`team_id`, `project_id`, `snippet_revision`, `snippet_script`), sind in
den [Snippet settings](https://docs.ablyft.com/de/developers/installation/snippet-settings/#publication-webhooks) beschrieben.

## Fehlerbehebung

* **Eine Änderung ist noch nicht sichtbar.** Warte, bis der Countdown **Publishing …** und die Cache Expiration abgelaufen
  sind. Lade dann die Seite neu. Siehe [Häufige Probleme](https://docs.ablyft.com/de/developers/debugging/common-issues/).
* **Die Revision im Browser ist älter als in ABlyft.** Der Browser oder ein Proxy hat das Snippet gecacht. Lade die Seite
  neu oder prüfe, ob du das Snippet über einen Dienst lädst, der Dateien länger cacht.

## Nächste Schritte

- [Snippet settings](https://docs.ablyft.com/de/developers/installation/snippet-settings/): Cache Expiration, Anti-Flicker, Debug-Modus und Webhooks.
- [Debugging](https://docs.ablyft.com/de/developers/debugging/): Prüfe, was der Visitor erhält.

