Partilhar via


Evite problemas de cache HTTP ao atualizar aplicativos ASP.NET Core Blazor

Observação

Esta não é a versão mais recente deste artigo. Para a versão atual, consulte a versão .NET 10 deste artigo.

Advertência

Esta versão do ASP.NET Core não é mais suportada. Para obter mais informações, consulte a Política de suporte do .NET e do .NET Core. Para a versão atual, consulte a versão .NET 9 deste artigo.

Este artigo explica como evitar problemas de cache HTTP ao atualizar Blazor aplicativos.

Quando Blazor as aplicações são atualizadas ou configuradas incorretamente, podem resultar em atualizações não fluídas para os utilizadores existentes. Este artigo discute alguns dos problemas comuns de cache HTTP que podem ocorrer ao atualizar Blazor aplicativos em versões principais. Ele também fornece algumas ações recomendadas para garantir uma transição suave para seus usuários.

Embora versões futuras Blazor possam fornecer soluções melhores para lidar com problemas de cache HTTP, em última análise, cabe ao aplicativo configurar corretamente o cache. A configuração adequada de cache garante que os utilizadores do aplicativo sempre tenham a versão mais recente do aplicativo, melhorando a sua experiência e reduzindo a probabilidade de encontrar erros.

Problemas comuns que afetam negativamente a experiência de atualização do usuário incluem:

  • Tratamento incorreto de atualizações de projetos e pacotes: isso acontece se você não atualizar todos os projetos implantados do aplicativo para usar a mesma versão principal do framework ou se usar pacotes de uma versão anterior quando uma versão mais recente estiver disponível como parte da atualização principal.
  • Configuração incorreta de cabeçalhos de cache: os cabeçalhos de cache HTTP controlam como, onde e por quanto tempo as respostas do aplicativo são armazenadas em cache. Se os cabeçalhos não estiverem configurados corretamente, os usuários poderão receber arquivos obsoletos ou incompatíveis. Isso inclui Blazor o cache de ativos do pacote, para o qual os cabeçalhos de cache do servidor devem ser definidos corretamente para evitar problemas de cache no cliente.
  • Configuração incorreta de outras camadas: as Redes de Distribuição de Conteúdo (CDNs) e outras camadas do aplicativo implantado podem causar problemas se configuradas incorretamente. Por exemplo, as CDNs são projetadas para armazenar em cache e fornecer conteúdo para melhorar o desempenho e reduzir a latência. Se uma CDN estiver servindo incorretamente versões em cache de ativos, isso pode levar à entrega de conteúdo obsoleto para o usuário.

Detetar e diagnosticar problemas de atualização

Os problemas de atualização geralmente aparecem como uma falha ao iniciar o aplicativo no navegador. Normalmente, um aviso indica a presença de um ativo obsoleto ou de um ativo ausente ou inconsistente com o aplicativo.

  • Primeiro, verifique se o aplicativo é carregado com êxito em uma instância limpa do navegador. Use um modo de navegador privado para carregar o aplicativo, como o modo InPrivate do Microsoft Edge ou o modo de navegação anônima do Google Chrome. Se o aplicativo falhar ao carregar, isso provavelmente significa que um ou mais pacotes ou a estrutura não foi atualizada corretamente.
  • Se o aplicativo for carregado corretamente em uma instância limpa do navegador, é provável que o aplicativo esteja sendo servido a partir de um cache obsoleto. Na maioria dos casos, uma atualização rígida do navegador com Ctrl+F5 libera o cache, o que permite que o aplicativo seja carregado e executado com os ativos mais recentes.
  • Se o aplicativo continuar a falhar, é provável que um cache CDN obsoleto esteja servindo o aplicativo. Tente liberar o cache DNS por meio de qualquer mecanismo que seu provedor de CDN ofereça.

O processo anterior para servir o aplicativo pode tornar o processo de atualização mais desafiador. Por exemplo, evitar ou usar incorretamente cabeçalhos de cache no passado pode levar a problemas de cache atuais para os usuários. Você pode executar as ações nas seções a seguir para mitigar o problema e melhorar o processo de atualização para os usuários.

Alinhar pacotes de framework com a versão do framework

Certifique-se de que os pacotes de estrutura estejam alinhados com a versão do framework. Usar pacotes de uma versão anterior quando uma versão mais recente está disponível pode levar a problemas de compatibilidade. Também é importante garantir que todos os projetos implantados do aplicativo usem a mesma versão principal da estrutura. Essa consistência ajuda a evitar comportamentos e erros inesperados.

Verificar a presença de cabeçalhos de cache corretos

Os cabeçalhos de cache corretos devem estar presentes nas respostas às solicitações de recursos. Isso inclui ETag, Cache-Controle outros cabeçalhos de cache. A configuração desses cabeçalhos depende do serviço de hospedagem ou da plataforma do servidor de hospedagem. Eles são particularmente importantes para recursos como o Blazor script e aquilo que o script descarrega.

Cabeçalhos de cache HTTP incorretos também podem afetar os trabalhadores de serviço. Os service workers dependem dos cabeçalhos de cache para gerir os recursos armazenados em cache eficazmente. Portanto, cabeçalhos incorretos ou ausentes podem interromper a funcionalidade do service worker.

Usar Clear-Site-Data para excluir o estado no navegador

Considere usar o Clear-Site-Data cabeçalho para eliminar o estado no navegador.

Normalmente, a origem dos problemas de estado de cache é limitada ao cache do navegador HTTP, portanto, o uso da diretiva cache deve ser suficiente. Essa ação pode ajudar a garantir que o navegador busque os recursos mais recentes do servidor, em vez de fornecer conteúdo obsoleto do cache.

Opcionalmente, você pode incluir a storage diretiva para limpar caches de armazenamento local ao mesmo tempo em que limpa o cache do navegador HTTP. No entanto, os aplicativos que usam o armazenamento do cliente podem sofrer uma perda de informações importantes se a storage diretiva for usada.

Acrescentar uma string de consulta ao Blazor tag de script

Se nenhuma das ações recomendadas anteriormente for eficaz, ou se não forem possíveis de usar na sua implementação ou aplicar ao seu aplicativo, considere anexar temporariamente um parâmetro de consulta à fonte da etiqueta do script Blazor<script>. Essa ação deve ser suficiente na maioria das situações para forçar o navegador a ignorar o cache HTTP local e baixar uma nova versão do aplicativo. Não há necessidade de ler ou usar a cadeia de caracteres de consulta no aplicativo.

No exemplo a seguir, a string de consulta temporaryQueryString=1 é aplicada temporariamente ao URI de origem externa relativo do <script> tag.

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

Depois que todos os usuários do aplicativo tiverem recarregado o aplicativo, a cadeia de caracteres de consulta poderá ser removida.

Como alternativa, você pode aplicar uma cadeia de caracteres de consulta persistente com controle de versão relevante. O exemplo a seguir pressupõe que a versão do aplicativo corresponde à versão de lançamento do .NET (8 para .NET 8):

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

Para obter o local da tag de script Blazor<script>, consulte ASP.NET Core estrutura do projetoBlazor.