【发布时间】:2021-12-28 09:24:21
【问题描述】:
我有一个在 ASP.net Core 中开发并托管在 Azure 应用服务 (Linux) 上的 PWA。
新版 PWA 发布时,我发现设备在不清除浏览器缓存的情况下无法更新。
为了解决这个问题,我发现了一个名为 asp-append-version 的标签助手,它可以清除特定文件的缓存。我还发现我可以附加指定文件 URL 的 src 属性的版本,以触发浏览器检索最新文件。例如,src="/scripts/pwa.js?v=1"。每次更新 pwa.js 文件时,我也会更改版本,即 v=2。
我现在发现我的 PWA 正在我的应用程序中缓存其他 JavaScript 文件,这导致该应用程序无法在已更新到新版本的设备上运行,但无法清除特定文件的缓存。
我相信如果我没有指定任何缓存控制标头(例如 Cache-Control),浏览器不会缓存任何文件,但事实并非如此。
要解决此问题,推荐的方法是添加适当的 Cache-Control 标头 (Cache-Control、Pragma 和 Expires) 以防止浏览器缓存,或者我应该只添加标签助手 asp-append-version 例如脚本标签以自动清除该特定文件的缓存?
我希望浏览器存储例如图像,而不是每次都去服务器检索这些图像。我相信设置标题 Cache-Control: no-cache 会起作用,因为这会在检索更新版本之前检查文件是否已更改?
谢谢。
【问题讨论】:
-
请提供足够的代码,以便其他人更好地理解或重现问题。
标签: asp.net-core caching azure-web-app-service progressive-web-apps