Freigeben über


Vermeiden von Problemen beim HTTP-Caching beim Upgrade von ASP.NET Core-Apps Blazor

Hinweis

Dies ist nicht die neueste Version dieses Artikels. Die aktuelle Version finden Sie in der .NET 10-Version dieses Artikels.

Warnung

Diese Version von ASP.NET Core wird nicht mehr unterstützt. Weitere Informationen finden Sie in der .NET- und .NET Core-Supportrichtlinie. Informationen zum aktuellen Release finden Sie in der .NET 9-Version dieses Artikels.

In diesem Artikel wird erläutert, wie Probleme beim Zwischenspeichern von HTTP beim Upgrade von Blazor Apps vermieden werden.

Wenn Blazor Apps fälschlicherweise aktualisiert oder konfiguriert wurden, kann es zu nicht nahtlosen Upgrades für vorhandene Benutzer führen. In diesem Artikel werden einige der häufig auftretenden HTTP-Caching-Probleme erläutert, die beim Upgraden von Blazor-Apps auf Hauptversionen auftreten können. Außerdem werden einige empfohlene Aktionen bereitgestellt, um einen reibungslosen Übergang für Ihre Benutzer sicherzustellen.

Während zukünftige Blazor Versionen möglicherweise bessere Lösungen für den Umgang mit HTTP-Caching-Problemen bieten, liegt es letztendlich an der App, die Zwischenspeicherung ordnungsgemäß zu konfigurieren. Durch eine ordnungsgemäße Caching-Konfiguration wird sichergestellt, dass die Benutzer der App immer über die aktuellste Version der App verfügen, um ihre Erfahrung zu verbessern und die Wahrscheinlichkeit von Fehlern zu verringern.

Häufige Probleme, die sich negativ auf die Benutzerupgradeerfahrung auswirken, umfassen:

  • Falsche Behandlung von Projekt- und Paketupdates: Dies geschieht, wenn Sie nicht alle bereitgestellten Projekte der App aktualisieren, um dieselbe Hauptframeworkversion zu verwenden, oder wenn Sie Pakete aus einer früheren Version verwenden, wenn eine neuere Version als Teil des Hauptupgrades verfügbar ist.
  • Falsche Konfiguration von Cacheheadern: HTTP-Cacheheader steuern, wie, wo und wie lange die Antworten der App zwischengespeichert werden. Wenn Header nicht ordnungsgemäß konfiguriert sind, erhalten Benutzer möglicherweise veraltete oder nicht übereinstimmende Dateien. Dazu gehört Blazor das Zwischenspeichern von Bundleressourcen, bei dem Serverzwischenspeicherungsheader ordnungsgemäß festgelegt werden müssen, um Zwischenspeicherungsprobleme auf dem Client zu vermeiden.
  • Falsche Konfiguration anderer Ebenen: Content Delivery Networks (CDNs) und andere Ebenen der bereitgestellten App können Probleme verursachen, wenn sie falsch konfiguriert sind. Z. B. sind CDNs für das Zwischenspeichern und Bereitstellen von Inhalten konzipiert, um die Leistung zu verbessern und die Latenz zu verringern. Wenn ein CDN fälschlicherweise zwischengespeicherte Versionen von Objekten bedient, kann es zu veralteter Inhaltsübermittlung an den Benutzer führen.

Erkennen und Diagnostizieren von Upgradeproblemen

Upgradeprobleme werden in der Regel als Fehler beim Starten der App im Browser angezeigt. Normalerweise weist eine Warnung auf das Vorhandensein eines veralteten Elements oder einer Ressource hin, die mit der App fehlt oder inkonsistent ist.

  • Überprüfen Sie zunächst, ob die App in einer sauberen Browserinstanz erfolgreich geladen wird. Verwenden Sie einen privaten Browsermodus, um die App zu laden, z. B. den InPrivate-Modus von Microsoft Edge oder den Google Chrome Inkognito-Modus. Wenn die App nicht geladen werden kann, bedeutet dies wahrscheinlich, dass mindestens ein Paket oder das Framework nicht ordnungsgemäß aktualisiert wurde.
  • Wenn die App in einer sauberen Browserinstanz ordnungsgemäß geladen wird, wird die App wahrscheinlich aus einem veralteten Cache bereitgestellt. In den meisten Fällen löscht eine feste Browseraktualisierung mit STRG+F5 den Cache, wodurch die App mit den neuesten Ressourcen geladen und ausgeführt werden kann.
  • Wenn die App weiterhin fehlschlägt, ist es wahrscheinlich, dass ein veralteter CDN-Cache die App bedient. Versuchen Sie, den DNS-Cache über den von Ihrem CDN-Anbieter angebotenen Mechanismus zu leeren.

Der vorherige Prozess für die App-Bereitstellung macht den Updateprozess möglicherweise schwieriger. Beispielsweise kann das Vermeiden oder Falsches Verwenden von Zwischenspeicherungsheadern in der Vergangenheit zu aktuellen Zwischenspeicherungsproblemen für Benutzer führen. Sie können die Aktionen in den folgenden Abschnitten ausführen, um das Problem zu beheben und den Upgradeprozess für Benutzer zu verbessern.

Frameworkpakete an die Framework-Version anpassen

Stellen Sie sicher, dass Frameworkpakete mit der Frameworkversion in Einklang stehen. Die Verwendung von Paketen aus einer früheren Version, wenn eine neuere Version verfügbar ist, kann zu Kompatibilitätsproblemen führen. Es ist auch wichtig sicherzustellen, dass alle bereitgestellten Projekte der App dieselbe Hauptframeworkversion verwenden. Diese Konsistenz trägt dazu bei, unerwartetes Verhalten und Fehler zu vermeiden.

Überprüfen des Vorhandenseins korrekter Zwischenspeicherungsheader

Die richtigen Zwischenspeicherungsheader sollten für Antworten auf Ressourcenanforderungen vorhanden sein. Dazu gehören ETag, Cache-Control und andere Cache-Header. Die Konfiguration dieser Header hängt von der Hostingdienst- oder Hostingserverplattform ab. Sie sind besonders wichtig für Ressourcen wie das Blazor Skript und alles, was das Skript herunterlädt.

Falsche HTTP-Cacheheader können sich auch auf Service Worker auswirken. Service Worker verlassen sich auf die Zwischenspeicherung von Headern, um zwischengespeicherte Ressourcen effektiv zu verwalten. Daher können falsche oder fehlende Header die Funktionalität des Dienstmitarbeiters stören.

Nutzen Sie Clear-Site-Data, um den Zustand im Browser zu löschen

Erwägen Sie die Verwendung des Clear-Site-Data Headers zum Löschen des Zustands im Browser.

In der Regel ist die Quelle von Cachestatusproblemen auf den HTTP-Browsercache beschränkt, daher sollte die Verwendung der cache Direktive ausreichend sein. Mit dieser Aktion kann sichergestellt werden, dass der Browser die neuesten Ressourcen vom Server abruft, anstatt veraltete Inhalte aus dem Cache zu verarbeiten.

Sie können optional die storage Direktive einschließen, um lokale Speichercaches gleichzeitig zu löschen, während Sie den HTTP-Browsercache löschen. Apps, die den Clientspeicher verwenden, können jedoch einen Verlust wichtiger Informationen feststellen, wenn die storage Direktive verwendet wird.

Anfügen einer Abfragezeichenfolge an das Blazor Skripttag

Wenn keine der vorherigen empfohlenen Aktionen wirksam ist, für Ihre Bereitstellung verwendet werden kann oder auf Ihre App angewendet werden kann, erwägen Sie vorübergehend, eine Abfragezeichenfolge an die Blazor Tagquelle des Skripts <script> anzufügen. Diese Aktion sollte in den meisten Situationen ausreichen, um zu erzwingen, dass der Browser den lokalen HTTP-Cache umgehen und eine neue Version der App herunterladen kann. Es ist nicht erforderlich, die Abfragezeichenfolge in der App zu lesen oder zu verwenden.

Im folgenden Beispiel wird die Abfragezeichenfolge temporaryQueryString=1 vorübergehend auf den relativen externen Quell-URI des <script> Tags angewendet:

<script src="_framework/blazor.webassembly.js?temporaryQueryString=1"></script>

Nachdem alle Benutzer der App die App neu geladen haben, kann die Abfragezeichenfolge entfernt werden.

Alternativ können Sie eine persistente Abfragezeichenfolge mit relevanter Versionsverwaltung anwenden. Im folgenden Beispiel wird davon ausgegangen, dass die Version der App mit der .NET-Version übereinstimmt (8 für .NET 8):

<script src="_framework/blazor.webassembly.js?version=8"></script>

Informationen zum Speicherort des Blazor Skripttags <script> finden Sie unter ASP.NET KernprojektstrukturBlazor.