Udostępnij za pośrednictwem


Unikaj problemów z buforowaniem HTTP podczas uaktualniania aplikacji ASP.NET Core Blazor

Uwaga

Nie jest to najnowsza wersja tego artykułu. Aby zapoznać się z bieżącą wersją, zapoznaj się z wersją tego artykułu platformy .NET 8.

Ostrzeżenie

Ta wersja ASP.NET Core nie jest już obsługiwana. Aby uzyskać więcej informacji, zobacz .NET i .NET Core Support Policy (Zasady obsługi platformy .NET Core). Aby zapoznać się z bieżącą wersją, zapoznaj się z wersją tego artykułu platformy .NET 8.

Ważne

Te informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany, zanim zostanie wydany komercyjnie. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.

Aby zapoznać się z bieżącą wersją, zapoznaj się z wersją tego artykułu platformy .NET 8.

Jeśli Blazor aplikacje są niepoprawnie uaktualnione lub skonfigurowane, może to spowodować nie bezproblemowe uaktualnienia dla istniejących użytkowników. W tym artykule omówiono niektóre typowe problemy z buforowaniem HTTP, które mogą wystąpić podczas uaktualniania Blazor aplikacji w różnych wersjach głównych. Udostępnia również kilka zalecanych akcji, aby zapewnić bezproblemowe przejście dla użytkowników.

Podczas gdy przyszłe Blazor wersje mogą zapewnić lepsze rozwiązania problemów z buforowaniem HTTP, ostatecznie do aplikacji należy prawidłowe skonfigurowanie buforowania. Właściwa konfiguracja buforowania gwarantuje, że użytkownicy aplikacji zawsze mają najbardziej aktualną wersję aplikacji, poprawiając ich środowisko i zmniejszając prawdopodobieństwo wystąpienia błędów.

Typowe problemy, które negatywnie wpływają na środowisko uaktualniania użytkownika, to:

  • Nieprawidłowa obsługa aktualizacji projektu i pakietu: dzieje się tak, jeśli nie zaktualizujesz wszystkich wdrożonych projektów aplikacji w celu korzystania z tej samej wersji głównej platformy lub jeśli używasz pakietów z poprzedniej wersji, gdy nowsza wersja jest dostępna w ramach uaktualnienia głównego.
  • Nieprawidłowa konfiguracja nagłówków buforowania: nagłówki buforowania HTTP kontrolują sposób, gdzie i jak długo są buforowane odpowiedzi aplikacji. Jeśli nagłówki nie są poprawnie skonfigurowane, użytkownicy mogą odbierać nieaktualną zawartość.
  • Nieprawidłowa konfiguracja innych warstw: Sieci dostarczania zawartości (CDN) i inne warstwy wdrożonej aplikacji mogą powodować problemy w przypadku nieprawidłowej konfiguracji. Na przykład sieci CDN są przeznaczone do buforowania i dostarczania zawartości w celu zwiększenia wydajności i zmniejszenia opóźnienia. Jeśli usługa CDN niepoprawnie obsługuje buforowane wersje zasobów, może to prowadzić do nieaktualnego dostarczania zawartości użytkownikowi.

Wykrywanie i diagnozowanie problemów z uaktualnianiem

Problemy z uaktualnianiem zwykle pojawiają się jako niepowodzenie uruchamiania aplikacji w przeglądarce. Zwykle ostrzeżenie wskazuje obecność nieaktualnego zasobu lub zasobu, którego brakuje lub jest niespójna z aplikacją.

  • Najpierw sprawdź, czy aplikacja zostanie pomyślnie załadowana w czystym wystąpieniu przeglądarki. Użyj trybu przeglądarki prywatnej, aby załadować aplikację, taką jak tryb InPrivate przeglądarki Microsoft Edge lub tryb Incognito w przeglądarce Google Chrome. Jeśli ładowanie aplikacji nie powiedzie się, prawdopodobnie oznacza to, że co najmniej jeden pakiet lub struktura nie została poprawnie zaktualizowana.
  • Jeśli aplikacja ładuje się poprawnie w czystym wystąpieniu przeglądarki, prawdopodobnie aplikacja jest obsługiwana z nieaktualnej pamięci podręcznej. W większości przypadków twarde odświeżanie przeglądarki za pomocą Ctrl+F5 opróżnia pamięć podręczną, co pozwala aplikacji ładować i uruchamiać z najnowszymi elementami zawartości.
  • Jeśli aplikacja nadal kończy się niepowodzeniem, prawdopodobnie nieaktualna pamięć podręczna CDN obsługuje aplikację. Spróbuj opróżnić pamięć podręczną DNS za pośrednictwem dowolnego mechanizmu, który oferuje dostawca usługi CDN.

Poprzedni proces obsługi aplikacji może utrudnić proces aktualizacji. Na przykład unikanie lub niepoprawne używanie nagłówków buforowania w przeszłości może prowadzić do bieżących problemów z buforowaniem dla użytkowników. Możesz wykonać akcje w poniższych sekcjach, aby rozwiązać problem i ulepszyć proces uaktualniania dla użytkowników.

Dopasowywanie pakietów struktury do wersji struktury

Upewnij się, że pakiety struktury są zgodne z wersją platformy. Używanie pakietów z poprzedniej wersji, gdy dostępna jest nowsza wersja, może prowadzić do problemów ze zgodnością. Ważne jest również, aby upewnić się, że wszystkie wdrożone projekty aplikacji korzystają z tej samej głównej wersji platformy. Ta spójność pomaga uniknąć nieoczekiwanego zachowania i błędów.

Sprawdzanie obecności prawidłowych nagłówków buforowania

Prawidłowe nagłówki buforowania powinny znajdować się w odpowiedziach na żądania zasobów. ETagObejmuje to nagłówki , Cache-Control, i inne nagłówki buforowania. Konfiguracja tych nagłówków zależy od usługi hostingu lub platformy serwera hostingu. Są one szczególnie ważne dla zasobów, takich jak Blazor skrypt (blazor.webassembly.js) i wszystko, co skrypt pobiera.

Nieprawidłowe nagłówki buforowania HTTP mogą również mieć wpływ na procesy robocze usług. Pracownicy usług korzystają z nagłówków buforowania w celu efektywnego zarządzania zasobami buforowanym. W związku z tym nieprawidłowe lub brakujące nagłówki mogą zakłócać funkcjonalność procesu roboczego usługi.

Użyj Clear-Site-Data polecenia , aby usunąć stan w przeglądarce

Rozważ użycie nagłówka Clear-Site-Data do usunięcia stanu w przeglądarce.

Zwykle źródło problemów ze stanem pamięci podręcznej jest ograniczone do pamięci podręcznej przeglądarki HTTP, więc użycie cache dyrektywy powinno być wystarczające. Ta akcja może pomóc w zapewnieniu, że przeglądarka pobiera najnowsze zasoby z serwera, zamiast obsługiwać nieaktualną zawartość z pamięci podręcznej.

Opcjonalnie możesz uwzględnić dyrektywę storage w celu wyczyszczenia lokalnych pamięci podręcznych magazynu w tym samym czasie, gdy wyczyścisz pamięć podręczną przeglądarki HTTP. Jednak aplikacje korzystające z magazynu klienta mogą utracić ważne informacje, jeśli storage dyrektywa jest używana.

Dołączanie ciągu zapytania do tagu skryptu Blazor

Jeśli żadne z poprzednich zalecanych akcji nie jest skuteczne, możliwe do użycia we wdrożeniu lub zastosowanie do aplikacji, rozważ tymczasowe dołączenie ciągu zapytania do Blazor źródła tagów skryptu <script> . Ta akcja powinna wystarczyć w większości sytuacji, aby wymusić pominięcie lokalnej pamięci podręcznej HTTP i pobranie nowej wersji aplikacji. Nie ma potrzeby odczytywania ani używania ciągu zapytania w aplikacji.

W poniższym przykładzie ciąg temporaryQueryString=1 zapytania jest tymczasowo stosowany do względnego zewnętrznego identyfikatora URI tagu <script> :

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

Po ponownym załadowaniu aplikacji przez wszystkich użytkowników aplikacji można usunąć ciąg zapytania.

Alternatywnie można zastosować trwały ciąg zapytania z odpowiednim przechowywaniem wersji. W poniższym przykładzie przyjęto założenie, że wersja aplikacji jest zgodna z wersją wydania platformy .NET (8 dla platformy .NET 8):

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

Aby uzyskać informacje o lokalizacji tagu skryptu Blazor <script>, zobacz ASP.NET Core project structure (Struktura projektu ASP.NET CoreBlazor).