asp.net核心2静态文件缓存破坏默认文件default.html?

时间:2017-10-05 15:53:37

标签: asp.net-core asp.net-core-webapi

我有一个单页网页应用程序,我使用版本控制来缓存应用程序所需的脚本和其他资源,例如在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中间件。

这是一个手动步骤,但我肯定会在某个时候忘记这样做。

我该如何处理这种情况?

2 个答案:

答案 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”

脚本标记的属性。