Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание.
Это не последняя версия этой статьи. Актуальная версия — см. версию этой статьи для .NET 9.
Предупреждение
Эта версия ASP.NET Core больше не поддерживается. Дополнительные сведения см. в политике поддержки .NET и .NET Core. Актуальная версия — см. версию этой статьи для .NET 9.
Это важно
Эта информация относится к предварительному выпуску продукта, который может быть существенно изменен до его коммерческого выпуска. Корпорация Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых в отношении информации, предоставленной здесь.
Актуальная версия — см. версию этой статьи для .NET 9.
В этой статье объясняется, как избежать проблем с кэшированием HTTP при обновлении Blazor приложений.
Когда Blazor приложения неправильно обновляются или настраиваются, это может привести к нарушениям в обновлениях для существующих пользователей. В этой статье рассматриваются некоторые распространенные проблемы с кэшированием HTTP, которые могут возникать при обновлении Blazor приложений в основных версиях. Он также предоставляет некоторые рекомендуемые действия для обеспечения плавного перехода для пользователей.
Хотя будущие Blazor выпуски могут предоставлять лучшие способы решения проблем с кэшированием HTTP, в конечном итоге именно приложение должно правильно настроить параметры кэширования. Правильная конфигурация кэширования гарантирует, что пользователи приложения всегда имеют самую up-toверсию приложения, повышая их интерфейс и уменьшая вероятность возникновения ошибок.
Распространенные проблемы, которые негативно влияют на опыт обновления пользователей, включают:
- Неправильная обработка обновлений проекта и пакетов. Это происходит, если вы не обновляете все развернутые проекты приложения, чтобы использовать ту же основную версию платформы или если вы используете пакеты из предыдущей версии, когда более новая версия доступна в рамках основного обновления.
- Неправильная конфигурация заголовков кэширования: заголовки кэширования HTTP контролируют то, как, где и в течение какого времени кэшируются ответы приложения. Если заголовки настроены неправильно, пользователи могут получать устаревшее содержимое.
- Неправильной конфигурации других слоев: сети доставки содержимого (CDN) и другие слои развернутого приложения могут вызвать проблемы при неправильной настройке. Например, CDN предназначены для кэширования и доставки содержимого для повышения производительности и уменьшения задержки. Если CDN неправильно обслуживает кэшированные версии ресурсов, это может привести к устаревшей доставке содержимого пользователю.
Обнаружение и диагностика проблем с обновлением
Проблемы с обновлением обычно отображаются как сбой запуска приложения в браузере. Как правило, предупреждение указывает на наличие устаревшего ресурса или ресурса, который отсутствует или не согласуется с приложением.
- Сначала проверьте, успешно ли приложение загружается в чистом экземпляре браузера. Используйте режим частного браузера для загрузки приложения, например режима Microsoft Edge InPrivate или режима Google Chrome Incognito. Если приложение не загружается, скорее всего, это означает, что один или несколько пакетов или платформа не была правильно обновлена.
- Если приложение загружается правильно в чистом экземпляре браузера, скорее всего, приложение обслуживается из устаревшего кэша. В большинстве случаев полное обновление браузера с Ctrl+F5 очищает кэш, что позволяет приложению загружаться и запускаться с последними ресурсами.
- Если приложение продолжает сбоить, скорее всего, устаревший кэш CDN предоставляет приложение. Попробуйте очистить кэш DNS с помощью любого механизма, который предлагает поставщик CDN.
Рекомендуемые действия перед обновлением
Предыдущий процесс обслуживания приложения может сделать процесс обновления более сложным. Например, предотвращение или неправильное использование заголовков кэширования в прошлом может привести к текущим проблемам кэширования для пользователей. Вы можете выполнить действия, описанные в следующих разделах, чтобы устранить проблему и улучшить процесс обновления для пользователей.
Согласование пакетов платформы с версией платформы
Убедитесь, что пакеты платформы соответствуют версии платформы. Использование пакетов из предыдущей версии, когда доступна более новая версия, может привести к проблемам совместимости. Кроме того, важно убедиться, что все развернутые проекты приложения используют одну и ту же основную версию платформы. Эта согласованность помогает избежать непредвиденных действий и ошибок.
Проверка наличия правильных заголовков кэширования
Правильные заголовки кэширования должны присутствовать в ответах на запросы ресурсов. Это включает ETag
, Cache-Control
и другие заголовки кэширования. Конфигурация этих заголовков зависит от службы размещения или платформы сервера размещения. Они особенно важны для таких активов, как Blazor скрипт (blazor.webassembly.js
) и все, что скрипт загружает.
Неправильные заголовки кэширования HTTP также могут повлиять на работников служб. Рабочие службы используют кэширование заголовков для эффективного управления кэшируемыми ресурсами. Поэтому неправильные или отсутствующие заголовки могут нарушить функционирование служебного работника.
Использование Clear-Site-Data
для удаления состояния в браузере
Рекомендуется использовать Clear-Site-Data
заголовок для удаления состояния в браузере.
Обычно источник проблем состояния кэша ограничен кэшем HTTP-браузера, поэтому использование cache
директивы должно быть достаточно. Это действие поможет убедиться, что браузер извлекает последние ресурсы с сервера, а не обслуживает устаревший контент из кэша.
При необходимости можно включить storage
директиву для очистки локальных кэшей хранилища одновременно, когда вы очищаете кэш браузера HTTP. Однако приложения, использующие клиентское хранилище, могут привести к потере важных сведений, если используется директива storage
.
Добавление строки запроса к тегу скрипта Blazor
Если ни одно из предыдущих рекомендуемых действий не является эффективным для вашего развертывания или приложения, попробуйте временно добавить строку запроса к источнику тега скрипта Blazor<script>
. Это действие должно быть достаточно в большинстве случаев, чтобы заставить браузер обойти локальный кэш HTTP и скачать новую версию приложения. Нет необходимости считывать или использовать строку запроса в приложении.
В следующем примере строка запроса temporaryQueryString=1
временно применяется к относительному URI внешнего источника тега <script>
.
<script src="_framework/blazor.webassembly.js?temporaryQueryString=1"></script>
После перезагрузки приложения все пользователи приложения могут удалить строку запроса.
В качестве альтернативы, можно применить строку сохраняемого запроса с соответствующей версионностью. В следующем примере предполагается, что версия приложения соответствует версии выпуска .NET (8
для .NET 8):
<script src="_framework/blazor.webassembly.js?version=8"></script>
Расположение тега Blazor скрипта <script>
см. в разделе ASP.NET Структура проекта CoreBlazor.
ASP.NET Core