Vyhněte se problémům s ukládáním do mezipaměti HTTP při upgradu aplikací ASP.NET Core Blazor
Poznámka:
Toto není nejnovější verze tohoto článku. Aktuální verzi najdete ve verzi .NET 8 tohoto článku.
Upozorňující
Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v tématu .NET a .NET Core Zásady podpory. Aktuální verzi najdete ve verzi .NET 8 tohoto článku.
Důležité
Tyto informace se týkají předběžného vydání produktu, který může být podstatně změněn před komerčním vydáním. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Aktuální verzi najdete ve verzi .NET 8 tohoto článku.
Pokud Blazor jsou aplikace nesprávně upgradované nebo nakonfigurované, můžou vést k nerušovaným upgradům stávajících uživatelů. Tento článek popisuje některé běžné problémy s ukládáním do mezipaměti HTTP, ke kterým může dojít při upgradu Blazor aplikací napříč hlavními verzemi. Poskytuje také některé doporučené akce, které zajistí hladký přechod pro vaše uživatele.
I když budoucí Blazor verze můžou poskytovat lepší řešení pro řešení problémů s ukládáním do mezipaměti HTTP, je nakonec až na aplikaci, aby správně nakonfigurovali ukládání do mezipaměti. Správná konfigurace ukládání do mezipaměti zajišťuje, aby uživatelé aplikace měli vždy nejaktuálnější verzi aplikace, zlepšili jejich prostředí a snížili pravděpodobnost výskytu chyb.
Mezi běžné problémy, které negativně ovlivňují prostředí upgradu uživatelů, patří:
- Nesprávné zpracování aktualizací projektů a balíčků: K tomu dochází v případě, že neaktualizujete všechny nasazené projekty aplikace tak, aby používaly stejnou hlavní verzi architektury, nebo pokud používáte balíčky z předchozí verze, pokud je v rámci hlavního upgradu k dispozici novější verze.
- Nesprávná konfigurace hlaviček ukládání do mezipaměti: Hlavičky mezipaměti HTTP určují, jak, kde a jak dlouho se odpovědi aplikace ukládají do mezipaměti. Pokud hlavičky nejsou správně nakonfigurované, můžou uživatelé obdržet zastaralý obsah.
- Nesprávná konfigurace jiných vrstev: Sítě pro doručování obsahu (CDN) a další vrstvy nasazené aplikace můžou způsobit problémy, pokud jsou nesprávně nakonfigurované. Sítě CDN jsou například navrženy pro ukládání do mezipaměti a doručování obsahu za účelem zlepšení výkonu a snížení latence. Pokud cdN nesprávně obsluhuje verze prostředků uložených v mezipaměti, může vést k zastaralému doručování obsahu uživateli.
Detekce a diagnostika problémů s upgradem
Problémy s upgradem se obvykle zobrazují jako selhání spuštění aplikace v prohlížeči. Obvykle upozornění označuje přítomnost zastaralého prostředku nebo prostředku, který chybí nebo je nekonzistentní s aplikací.
- Nejprve zkontrolujte, jestli se aplikace úspěšně načte v čisté instanci prohlížeče. K načtení aplikace, jako je režim InPrivate Microsoft Edge nebo Anonymní režim Google Chrome, použijte režim privátního prohlížeče. Pokud se aplikaci nepodaří načíst, pravděpodobně to znamená, že jeden nebo více balíčků nebo architektura nebyla správně aktualizována.
- Pokud se aplikace správně načte v čisté instanci prohlížeče, je pravděpodobné, že se aplikace obsluhuje ze zastaralé mezipaměti. Ve většině případů se pomocí ctrl+F5 vyprázdní mezipaměť, která aplikaci umožní načíst a spustit s nejnovějšími prostředky.
- Pokud aplikace dál selže, je pravděpodobné, že aplikace obsluhuje zastaralou mezipaměť CDN. Zkuste mezipaměť DNS vyprázdnit pomocí jakéhokoli mechanismu, který poskytovatel CDN nabízí.
Doporučené akce před upgradem
Předchozí proces obsluhy aplikace může usnadnit proces aktualizace. Například zabránění nebo nesprávnému použití hlaviček ukládání do mezipaměti v minulosti může vést k aktuálním problémům s ukládáním do mezipaměti pro uživatele. Akce můžete provést v následujících částech, abyste tento problém zmírňovali a vylepšili proces upgradu pro uživatele.
Sladění balíčků architektury s verzí architektury
Ujistěte se, že balíčky architektury jsou v souladu s verzí architektury. Použití balíčků z předchozí verze, pokud je k dispozici novější verze, může dojít k problémům s kompatibilitou. Je také důležité zajistit, aby všechny nasazené projekty aplikace používaly stejnou hlavní verzi architektury. Tato konzistence pomáhá vyhnout se neočekávanému chování a chybám.
Ověření přítomnosti správných hlaviček ukládání do mezipaměti
Správná hlavička ukládání do mezipaměti by měla být k dispozici u odpovědí na požadavky na prostředky. To zahrnuje ETag
hlavičky a Cache-Control
další hlavičky ukládání do mezipaměti. Konfigurace těchto hlaviček závisí na hostitelské službě nebo platformě hostitelského serveru. Jsou zvláště důležité pro prostředky, jako Blazor je skript (blazor.webassembly.js
) a cokoli, co skript stáhne.
Nesprávné hlavičky ukládání do mezipaměti HTTP můžou mít vliv také na pracovní procesy služeb. Pracovníci služeb spoléhají na hlavičky ukládání do mezipaměti pro efektivní správu prostředků uložených v mezipaměti. Nesprávné nebo chybějící hlavičky proto mohou narušit funkčnost pracovního procesu služby.
Slouží Clear-Site-Data
k odstranění stavu v prohlížeči.
Zvažte použití Clear-Site-Data
záhlaví k odstranění stavu v prohlížeči.
Zdroj problémů se stavem mezipaměti je obvykle omezen na mezipaměť prohlížeče HTTP, takže použití cache
direktivy by mělo být dostatečné. Tato akce může pomoct zajistit, aby prohlížeč načítal nejnovější prostředky ze serveru, a ne obsluhu zastaralého obsahu z mezipaměti.
Volitelně můžete zahrnout direktivu storage
pro vymazání místních mezipamětí úložiště ve stejnou dobu, kdy vymažete mezipaměť prohlížeče HTTP. Aplikace, které používají klientské úložiště, ale můžou při použití direktivy dojít ke storage
ztrátě důležitých informací.
Připojení řetězce dotazu ke Blazor značce skriptu
Pokud žádná z předchozích doporučených akcí není platná, je možné ji použít pro nasazení nebo použít pro vaši aplikaci, zvažte dočasné připojení řetězce dotazu ke Blazor zdroji značek skriptu <script>
. Tato akce by měla být dostatečná ve většině situací, aby prohlížeč vynechal místní mezipaměť HTTP a stáhl novou verzi aplikace. Nemusíte číst ani používat řetězec dotazu v aplikaci.
V následujícím příkladu se řetězec temporaryQueryString=1
dotazu dočasně použije na <script>
relativní identifikátor URI externího zdroje značky:
<script src="_framework/blazor.webassembly.js?temporaryQueryString=1"></script>
Jakmile všichni uživatelé aplikace aplikaci znovu načtou, můžete řetězec dotazu odebrat.
Případně můžete použít trvalý řetězec dotazu s příslušnou správou verzí. Následující příklad předpokládá, že verze aplikace odpovídá verzi .NET (8
pro .NET 8):
<script src="_framework/blazor.webassembly.js?version=8"></script>
Umístění značky Blazor skriptu <script>
najdete v tématu ASP.NET Blazor Základní struktura projektu.