3

我正在使用Microsoft ASP.NET Web Optimization Framework

您可能知道,它可以将所有 JS/CSS 连接到单个文件中。您可以在配置中定义输出文件名,并确保用户浏览器将获取更新的 JS/CSS,它添加了类似的参数v=yUVjELgc9foFnhZgsvMfx2DhVRLKWK-w69IoCVhJ_aM1

链接看起来像:

src="/scripts/js/jquery?v=yUVjELgc9foFnhZgsvMfx2DhVRLKWK-w69IoCVhJ_aM1"

我听说并非所有浏览器都支持该参数并且不刷新缓存。

我可以确定所有浏览器都会使用这种方法更新缓存还是我必须手动生成新文件名?是否有任何表格,我可以在其中看到不支持的浏览器?

谢谢

4

2 回答 2

6

我听说并非所有浏览器都支持该参数并且不刷新缓存。

浏览器不需要“支持”它。

其目的是将 URL 更改为脚本。

由于 URL 不同,因此该 URL 处的资源不会被缓存。

要使该技术无法工作,浏览器必须有一个严重的错误(其中特殊的查询字符串用于缓存处理)。这会破坏大量的网络,因为(例如)在谷歌搜索“小猫”,然后搜索“小狗”会显示小狗搜索的缓存小猫结果。

于 2013-01-25T13:02:13.293 回答
0

适用于浏览器,因为当您发送一个以前从未见过的完全不同的 URL 时,浏览器不应该使用缓存响应,因为它无法验证它是否正确。

RFC-2616

13.1.1 缓存正确性

正确的缓存必须使用缓存所持有的适合请求的最新响应来响应请求


如果您仍然担心并希望坚持标准中更明确定义的内容,您还可以Last-Modified在发送这些文件时为这些文件设置标题。

浏览器发出一个请求If-Modified-Since,当他们请求一个旧版本时,服务器不会返回 304 Not Modified,而是返回一个新的副本,防止缓存文件被使用。

于 2013-01-25T13:05:15.420 回答