在ASP.NET中的JavaScript和CSS缓存

3

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

  1. 使用.htaaccess文件进行自动版本控制。
  2. 虽然这并不被推荐,但可以将版本号作为查询参数。例如:'/scripts/script1?v=1.0.0'。这会导致浏览器不缓存文件,但可以完成工作。

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

我不确定是否有办法既能够利用缓存,又无需让用户刷新页面/清除缓存即可查看最新更改。

如果我需要在ASP.NET中实现.htaaccess解决方案,是否有方法可以实现?

非常感谢您的帮助。

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调用来比较加载的脚本的版本号与服务器上的版本号来强制刷新。服务器上的更新版本可以强制刷新。


и°ўи°ўжӮЁзҡ„еӣһеӨҚ@yohaasгҖӮжӮЁзҹҘйҒ“IIS 7жҳҜеҗҰж”ҜжҢҒhtaccessж–Ү件еҗ—пјҹеҰӮжһңдёҚж”ҜжҢҒпјҢйӮЈд№ҲIISиҜҘеҰӮдҪ•еӨ„зҗҶе‘ўпјҹ - Harish
我使用ISAPIRewrite。IIS也有URL Rewrite Extension可以使用。 - yohaas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接