我有一个单页网页应用程序,我使用版本控制来缓存应用程序所需的脚本和其他资源,例如在default.htm中我这样链接:
<script src="js/index.js?plv=1.1"></script>
这很好用,但我遇到的问题是default.htm页面本身是由浏览器缓存的,所以它没有读取新的default.htm,反过来也没有触发更新
&#34; home&#34;页面由app.UseDefaultFiles()中间件提供。
我正在思考一个快速而肮脏的方法来解决这个问题,在我发布的每个代码更新上,我在index.htm和default.htm之间交替作为默认文档并重命名另一个,因此它没有&# 39;得到UseDefaultFiles中间件。
这是一个手动步骤,但我肯定会在某个时候忘记这样做。
我该如何处理这种情况?
答案 0 :(得分:2)
回想起来,解决方案很明显,主页很轻,根本没有理由缓存它:
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");
}
}
});
答案 1 :(得分:0)
使用
asp-append-version =“ true”
脚本标记的属性。