作为查询参数的缓存断路器与文件名中的缓存断路器

TOB*_*der 2 css browser-cache

我们遇到了两种对 CSS 文件进行缓存破坏的方法。

缓存断路器作为查询参数传递:

http://your1337site.com/styles/cool.css?v=123
Run Code Online (Sandbox Code Playgroud)

缓存断路器作为名称的一部分:

http://your1337site.com/styles/123.cool.css
Run Code Online (Sandbox Code Playgroud)

哪种方式更好?为什么?

我觉得第二种方式更冗长,因为文件与文件夹结构上的名称匹配。如果您想在网站的其他部分共享“cool.css”,而这些部分无法访问您每次生成的唯一名称,则第一种方法很好。

Mik*_*keM 5

Steve Souder 的文章Revving Filenames: don\xe2\x80\x99t use querystring为将文件名更改为两者中更好的一个提供了很好的论据。

\n\n
\n

...同事 Jacob Hoffman-Andrews 提到,Squid(一种流行的代理)不会\xe2\x80\x99t 使用查询字符串缓存资源。当代理缓存后面的多个用户请求相同的文件 \xe2\x80\x93 而不是使用每个人都必须向源服务器发送请求的缓存版本时,这会损害性能。

\n
\n\n

顺便说一句,Squid 2.7 及更高版本确实使用默认配置缓存动态内容

\n