确保客户端更新的CSS / JavaScript

时间:2009-09-19 07:23:10

标签: javascript css caching

我正在努力确保我的ASP.NET MVC网站的访问者始终拥有最新的CSS和Javascript(而不是一些较旧的缓存版本)。

我试图通过在应用程序域启动时生成种子值来实现这一点,并自动将其附加到CSS和Javascript URL(所以现在而不是/Content/All.js链接是/Content/All.js? 549238等。)。

不幸的是,我刚刚通过Firebug调试发现这导致现在每个时间都有一个完整的下载请求(新的“种子”响应不再被缓存,但我只希望第一次检查下载'更新'版本,但再次缓存/只检查是否有差异)。

我如何实现目标,有更好的方法吗?我需要客户端始终请求最新版本,但如果没有发生任何更改则进行缓存。

编辑:这似乎与我的网页通过SSL提供的事实有关。asked a follow up question here关于使用SSL启用客户端缓存。

3 个答案:

答案 0 :(得分:1)

将修订号放在网址:foo.css?rev=348

- 编辑

你也可以使用你的构建工具来实现这一点(我实际上是用我编写的自定义文件来实现的)。

- 编辑

如果它漂浮在你的船上,这就是SO的作用。

答案 1 :(得分:0)

我认为您生成的种子值是一个随机数。将其替换为版本号,以便仅在应用程序的版本号更改时重新下载。

/Content/All.js?appVer1.5

当您修改应用程序时,您可以将其更改为

/Content/All.js?appVer1.6

答案 2 :(得分:0)

  1. 使用文件内容的校验和作为数字,例如All-a2a69e19d8628b65cb935708d64d7337.js。这样,只有当脚本内容发生变化时,数字才会改变。

  2. 创建一些负责为JavaScript文件生成链接和/或<script>标记的机制。

  3. 这样,在您的ASP.NET页面中,有类似的内容:

    <asp:ScriptTag source="All.js"/>
    

    取而代之的是:

    <script src="/All-a2a69e19d8628b65cb935708d64d7337.js" type="text/javascript"></script>