asp.net 核心 2 静态文件缓存破坏默认文档 default.html?
asp.net core 2 static files cache busting default document default.html?
我有一个单页 Web 应用程序,我使用版本控制来缓存破坏脚本和应用程序需要的其他资源,即在 default.htm 我 link 是这样的:
<script src="js/index.js?plv=1.1"></script>
这很好用,但是我 运行 遇到的问题是 default.htm 页面本身正在被浏览器缓存,因此它不会读取新的 default.htm 和turn 不会触发更新。
"home" 页面由 app.UseDefaultFiles() 中间件提供服务。
我在想一个快速而肮脏的方法来解决这个问题,在我发布的每个代码更新中,我在 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"
脚本标签上的属性。
我有一个单页 Web 应用程序,我使用版本控制来缓存破坏脚本和应用程序需要的其他资源,即在 default.htm 我 link 是这样的:
<script src="js/index.js?plv=1.1"></script>
这很好用,但是我 运行 遇到的问题是 default.htm 页面本身正在被浏览器缓存,因此它不会读取新的 default.htm 和turn 不会触发更新。
"home" 页面由 app.UseDefaultFiles() 中间件提供服务。
我在想一个快速而肮脏的方法来解决这个问题,在我发布的每个代码更新中,我在 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"
脚本标签上的属性。