官网:https://learn.microsoft.com/zh-cn/aspnet/core/blazor/http-caching-issues?view=aspnetcore-8.0
在升级 ASP.NET Core Blazor 应用时避免 HTTP 缓存问题。

有时候会遇到在本地运行正常,但是发布到服务器,其他用户使用的时候会出现一些js错误。
这时候用户刷新和清空浏览器缓存都解决不了问题。可参考微软官网调整代码。

升级前的建议操作
先前为应用提供服务的过程可能会使更新过程更具挑战性。 例如,过去避免或错误地使用缓存标头可能会导致用户当前出现缓存问题。 可采取以下部分中的操作来缓解问题并改进用户的升级过程。

使框架包与框架版本保持一致
确保框架包与框架版本一致。 如果有更新的版本可用,却使用更低版本中的包,可能会导致兼容性问题。 此外,请务必确保应用已部署的所有项目都使用相同的主框架版本。 这种一致性有助于避免出现意外的行为和错误。

验证是否存在正确的缓存标头
对资源请求的响应中应存在正确的缓存标头。 这包括 ETag、Cache-Control 和和其他缓存标头。 这些标头的配置依赖于托管服务或托管服务器平台。 它们对于 Blazor 脚本 (blazor.webassembly.js) 和脚本下载的任何内容等资产尤其重要。

HTTP 缓存标头不正确也可能会影响服务辅助角色。 服务辅助角色依赖于缓存标头来有效地管理缓存的资源。 因此,标头不正确或缺失可能会中断服务辅助角色的功能。

使用 Clear-Site-Data 在浏览器中删除状态
请考虑使用 Clear-Site-Data 标头 在浏览器中删除状态。

通常,缓存状态问题的来源仅限于 HTTP 浏览器缓存,因此使用 cache 指令应该就足够了。 此操作有助于确保浏览器从服务器提取最新资源,而不是从缓存中提供过时的内容。

可选择性地包含 storage 指令,以在清除 HTTP 浏览器缓存的同时清除本地存储缓存。 但是,如果使用 storage 指令,使用客户端存储的应用可能会丢失重要信息。

将查询字符串追加到 Blazor 脚本标记
如果上面建议的操作都无效、无法用于部署或无法运用于应用,请考虑暂时将查询字符串追加到 Blazor 脚本的

在应用的所有用户重新加载应用后,可以移除查询字符串。

或者,可以应用具有相关版本控制的持久查询字符串。 以下示例假定应用版本与 .NET 版本匹配(对于 .NET 8,为 8):

有关 Blazor 脚本的