【发布时间】:2011-11-15 18:57:16
【问题描述】:
问题:
我在客户的网站上托管一个小部件,该小部件对于网站上的每个页面都会有所不同。
为了呈现小部件,客户端在其页面上包含一个脚本标签。该脚本标记会为网站上的每个页面加载,它返回的代码取决于页面。
因此,如果此脚本被缓存,最终结果是我们为错误页面提供了一个小部件。
现在,当我们提供脚本时,我们在响应头中设置
缓存控制:max-age=0 过期时间:过去 24 小时但有时浏览器仍会缓存脚本。
问题:
有没有办法在所有情况下都使用 http 标头来停止缓存,还是我们必须采取完全不同的方法?
更新:
topek 推荐的标头大大提高了脚本的不可缓存性。但是,(再次在 Chrome 中似乎是最具缓存攻击性的)当使用后退、前进或重新加载按钮时,脚本仍会被缓存。如果你真的点击任何东西,它将从服务器获取。
似乎停止缓存的唯一万无一失的方法是设置保证每次页面加载都不同的脚本源(正如 esilija 和 tejs 所建议的那样)。
【问题讨论】:
-
为什么不在 js url 请求中包含一个随机查询字符串参数呢?或者附上日期时间之类的?
-
附加一个随机无意义的查询字符串.. 像这样:
script.js?14091341049134。从+new Date生成数字,每毫秒变化一次。 -
如果需要,我们可以这样做。然而,我们喜欢只要求我们的客户包含一个脚本标签的简单性。我想我们可以要求他们包含几行 js 来代替你的建议。
标签: javascript caching node.js http-caching