47 Punkte von xguru 2022-02-28 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Manchmal möchte man Logs hinterlassen, wenn Benutzer zu einer anderen Seite wechseln oder ein Formular absenden
  • fetch in ein Klick-Event zu packen garantiert nicht, dass die Anfrage wirklich gesendet wird
  • Deshalb versucht man es manchmal mit fetch und navigiert danach über window.location, aber auch das ist keine Garantie
    • XHR ist asynchron und nicht blockierend
  • Man kann fetch zwar mit await auf das Promise warten lassen, aber das hat Nachteile
    • Die Verarbeitung wird langsamer und verschlechtert die User Experience
    • Es ist nicht so zuverlässig wie erwartet. Dinge wie das Schließen des Browser-Tabs lassen sich damit nicht abfangen
  • Es gibt mehrere Optionen, mit denen man den Browser anweisen kann, die HTTP-Anfrage beizubehalten
    • Verwendet man beim Fetch das keepalive-Flag, bleibt die Anfrage auch dann erhalten, wenn die Seite beendet wird
    • Eine einfachere Funktion wie Navigator.sendBeacon()
    • Browser unterstützen auch das ping-Attribut bei a-Tags (Nachteil: nur für Links nutzbar, Firefox unterstützt es standardmäßig nicht)
  • Was sollte man also verwenden?
    • Wenn möglich fetch() + keepalive
      • Wird von 80 % der Browser unterstützt
      • Eigene Header können gesendet werden
      • Auch mit GET-Anfragen nutzbar
      • Unterstützt auch ältere Browser
    • sendBeacon() ist gut geeignet, wenn
      • Es von 96 % der Browser unterstützt wird
      • Man nicht viele Anpassungsmöglichkeiten braucht
      • Man eine saubere und elegante API bevorzugt
      • Man nicht mit anderen Browser-Anfragen niedriger Priorität konkurrieren möchte

Noch keine Kommentare.

Noch keine Kommentare.