3

我知道这个问题被问了很多次,最常见的答案是:

  1. 使用 .htaac​​cess 文件进行自动版本控制。
  2. 虽然完全不建议这样做,但使用版本号作为查询参数例如:'/scripts/script1?v=1.0.0'。这将导致浏览器不缓存文件,而是完成工作。

我正在处理一些发布后的问题,由于我们不遵循软件项目的生命周期,因此我们会在测试和修复问题时更新站点。因此,有时我们可能不得不一天更新几次网站,而不是一周没有更新。

我不确定是否有办法仍然可以利用缓存,同时不需要让用户刷新页面/清除缓存以查看最新更改。

如果这是我需要做的,有没有办法可以在 asp.net 中实现 .htaac​​cess 解决方案?

我真的很感激任何帮助。

4

1 回答 1

1

这是我用于 css 文件的解决方案,但应该适用于 JS:在 htaccess 中有一个规则:

RewriteRule ^(.*)_ver_.*(\..*)$ $1$2 [NC,L]

这需要一个文件名,例如“Style_ver_12345.css”,并将其重写为 Style.css。

然后,当您包含文件时,将实际文件的 LastWriteTime (File.GetLastWriteTime(filePath).Ticks.ToString()我是这样做的)附加为版本号。我将拥有的示例文件名是 Style_ver_634909902200823172.css

这将确保文件的任何更改都会立即导致新的版本号,而物理文件不需要具有不同的名称,并且文件将被浏览器缓存。

用户仍然需要刷新页面,但他们不必清除缓存。如果需要,也许您可​​以通过 ajax 调用来强制刷新,该调用将加载脚本的版本号与服务器上的版本号进行比较。然后,服务器上的较新版本可能会强制刷新。

于 2013-01-22T00:03:46.853 回答