【问题标题】:Javascript and css caching in asp.netasp.net 中的 Javascript 和 css 缓存
【发布时间】:2013-01-05 03:03:42
【问题描述】:

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

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

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

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

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

非常感谢任何帮助。

【问题讨论】:

    标签: javascript asp.net css caching


    【解决方案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 的做法是什么?
    • 我使用ISAPIRewrite。 IIS 确实有 URL Rewrite Extension 也可以使用。
    猜你喜欢
    • 2012-08-24
    • 2011-04-10
    • 1970-01-01
    • 2011-11-24
    • 2011-09-20
    • 1970-01-01
    • 2020-06-07
    • 2011-01-03
    • 2018-10-20
    相关资源
    最近更新 更多