Zum Inhalt springen

Delta-Updates

Capgo’s Live-Update-System kann Updates schneller und effizienter liefern, indem nur die geänderten Dateien gesendet werden, anstatt das gesamte JS-Bundle.

Dies ist insbesondere für Benutzer auf langsamen oder abgerechneten Netzwerkverbindungen von Vorteil, da es den Datenverkehr minimiert.

Ein zweiter Vorteil ist, wenn die App große Assets hat, die selten geändert werden, wie Bilder oder Videos, verglichen mit zugezippten JS-Dateien werden diese nur einmal heruntergeladen.

Wie funktionieren Delta-Updates (Manifest)?

Wie Delta (Manifest) Updates funktionieren

Delta (manifest) Updates in Capgo werden durch das Capgo-Plugin in Ihrer App gehandhabt. Wenn Sie eine neue Version Ihrer App mit der --delta Flag hochladen, führt Capgo die folgenden Schritte aus:

  1. Jedes Datei in Ihrem Build wird einzeln hochgeladen
  2. Für jede Datei werden Prüfsummen generiert
  3. Ein neues JSON-Manifest wird erstellt, das alle Dateien und ihre Prüfsummen auflistet
  4. Dieses Manifest wird in die Capgo-Datenbank hochgeladen

Wenn ein Gerät, das Ihre App läuft, nach einer Aktualisierung sucht, erhält das Capgo-Plugin das neue Manifest vom Server. Es vergleicht dieses Manifest mit dem, das es derzeit hat, und identifiziert auf der Grundlage der Prüfsummen und Dateipfaden, welche Dateien geändert wurden.

Das Plugin lädt dann nur die geänderten Dateien herunter, anstatt die gesamte JS-Bundle. Es rekonstruiert die neue Version der App, indem es diese heruntergeladenen Dateien mit den unveränderten Dateien kombiniert, die es bereits hat.

Delta (Manifest)-Updates aktivieren

Abschnitt: „Delta (Manifest)-Updates aktivieren“

Um Delta (Manifest)-Updates für Ihre Capgo-Anwendung zu aktivieren, verwenden Sie einfach die --delta Flagge, wenn Sie eine neue Version hochladen:

Terminalfenster
npx @capgo/cli@latest bundle upload --delta

Wenn autoUpdate festgelegt ist, um eine sofortige Anwendung ("atInstall", "onLaunch", oder "always") in Ihrer capacitor.config, erkennt die CLI dies. In nicht-interaktiven Umgebungen werden Delta (Manifest)-Updates automatisch gesendet, und in interaktiven Umgebungen wird Ihnen vor dem Hochladen bestätigt. Legacy directUpdate Konfiguration wird weiterhin erkannt. --no-delta eine vollständige Bundle-Upload zu erzwingen.

Limitierungen für Delta-Updates

Abschnitt „Limitierungen für Delta-Updates“
  • Leere Dateien: Die CLI-Protokolle Ignoring empty file... und schließt Dateien mit einem Größe von 0 Byte aus dem Delta-Manifest aus. Es wird der Upload nicht abgebrochen, daher kann das Hinzufügen einer leeren Datei das Ergebnis des Bundles ohne Unterbrechung der Bereitstellung ändern. Leere Dateien sollten nicht in Delta-Bundle-Pfaden enthalten sein.
  • Pfadmuster in Pfaden: Delta-Uploads scheitern, bevor Dateien hochgeladen werden, wenn ein Bundle-Pfad ein Leerzeichen enthält. Benennen Sie die Datei oder den Ordner um, um Leerzeichen zu entfernen, bevor Sie ein Delta-Update hochladen.

Delta-Updates (Manifest) durchsetzen

Abschnitt „Delta-Updates (Manifest) durchsetzen“

Wenn Sie sicherstellen möchten, dass alle Uploads Delta-Updates (Manifest) sind und keine ungewollten vollständigen Bundle-Uploads zulassen, können Sie den --delta-only Flag:

Terminalfenster
npx @capgo/cli@latest bundle upload --delta-only

Wenn --delta-only wird bei Capgo nur einzelne Dateien hochgeladen und ein Manifest generiert. Jedes Gerät, das Delta-Updates (Manifest) nicht unterstützt, kann das Update nicht herunterladen.

Sie möchten möglicherweise --delta-only wenn:

  • Sie möchten immer Delta-Updates (Manifest) verwenden und vollständige Bundle-Uploads nie zulassen.
  • Sie setzen ein CI/CD-Pipeline ein und möchten sicherstellen, dass alle automatischen Uploads Delta-Updates (Manifest) sind.
  • Ihr App ist groß und die Bandbreite ist eingeschränkt, daher müssen Sie die Upload- und Download-Größen minimieren.

Wenn Sie während --delta-only gesetzt ist, können Sie einfach den Upload-Befehl ohne --delta-onlyausführen. Dies überschreibt die Einstellung für diesen einzelnen Upload, sodass Sie eine vollständige Bundle hochladen können, wenn Sie es benötigen.

Wenn Delta (manifest)-Updates nicht wie erwartet funktionieren (d.h. Geräte laden immer die vollständige JS-Bundle, auch bei kleinen Änderungen), überprüfen Sie, ob:

  • Sie verwenden den --delta Flag bei jeder neuen Version hoch
  • Wenn Sie --delta-onlyverwenden, stellen Sie sicher, dass Sie nicht versehentlich den --delta Flag
  • Ihr Gerät läuft auf der neuesten Version des Capgo-Plugins
  • Ihr Gerät hat eine stabile Netzwerkverbindung und kann die Capgo-Server erreichen

Sie können auch die Capgo-Webanwendung verwenden, um die Details Ihrer letzten Uploads zu überprüfen:

  1. Zum Webanwendung
  2. Klicken Sie auf Ihre Anwendung
  3. Klicken Sie auf die Anzahl der Pakete in der Statistikleiste.
  4. Wählen Sie das letzte Paket
  5. Überprüfen Sie das Partial Feld Pakettyp

Wenn Sie weiterhin Schwierigkeiten haben, wenden Sie sich bitte an Capgo-Support, um weitere Unterstützung zu erhalten. Sie können die Serverprotokolle überprüfen, um sicherzustellen, dass Ihre Delta-(Manifest)-Uploads korrekt verarbeitet werden und dass Geräte die aktualisierten Manifeste empfangen.

Das ist alles! Die --delta Flaggtell Capgo an, die einzelnen Dateianlagen und die Manifestgenerierung durchzuführen, die für Delta-(Manifest)-Updates erforderlich sind.

Hinweis: Sie müssen --delta jedes Mal verwenden, wenn Sie eine neue Version hochladen, die Sie als Delta-(Manifest)-Update liefern möchten. Wenn Sie die Flagge überspringen, wird Capgo die gesamte JS-Bundle als einzelne Datei hochladen und Geräte werden die ganze Bundle herunterladen, selbst wenn nur ein kleiner Teil geändert wurde.

Wenn Sie Delta-Updates verwenden Delta-Updates um die Live-Update-Übermittlung zu planen, verbinden Sie es mit Capgo Live Updates für den Produktworkflow in Capgo Live Updates, Übersicht für die Implementierungsdetails in Übersicht, Funktionen für die Implementierungsdetails in Funktionen, Aktualisierungsverhalten für die Implementierungsdetails in Updateverhalten und Update-Typen für die Implementierungsdetails in Update-Typen.