我有一个单页 Web 应用程序,我使用版本控制来缓存应用程序所需的脚本和其他资源,即默认情况下.htm我像这样链接:
<script src="js/index.js?plv=1.1"></script>
这工作正常,但是我遇到的问题是默认.htm页面本身被浏览器缓存,因此它不会读取新的默认值.htm进而不会触发更新。
"主页"页面由应用程序提供。使用默认文件() 中间件。
我正在考虑解决此问题的一种快速而肮脏的方法,是在我发布的每次代码更新中,我在 index.htm 和 default.htm 作为默认文档之间交替,并重命名另一个,这样它就不会被 UseDefaultFiles 中间件拾取。
但是,这是一个手动步骤,我肯定会在某个时候忘记这样做。
我该如何处理这种情况?
回想起来,解决方案很明显,主页很轻,根本没有理由缓存它:
app.UseStaticFiles(
new StaticFileOptions
{
OnPrepareResponse = context =>
{
if (context.File.Name == "default.htm" ) {
context.Context.Response.Headers.Add("Cache-Control", "no-cache, no-store");
context.Context.Response.Headers.Add("Expires", "-1");
}
}
});
使用
asp-append-version="true"
脚本标记的属性。