代码之家  ›  专栏  ›  技术社区  ›  nonopolarity

缓存控制将在10年内到期,是否使用doc.css?v=128与doc_v128.css完全相同?

  •  0
  • nonopolarity  · 技术社区  · 14 年前

    使用时 Cache-Control Expires 使页面在10年内不会过期的标题:

    Cache-Control: max-age=315360000
    Expires: Sun, 19 Jul 2020 18:06:32 GMT
    

    使用第1行的结果是否与第2行的结果相同?

    <link href="/public/doc.css?v=128" ... >
    
    <link href="/public/doc_v128.css" ... >
    

    我在想也许某个浏览器会 ?v=128 作为一个更加动态的内容,在10年到期之前重新加载它?

    否则,这两个文件都将在10年后过期,当CSS发生更改时, 128 可以更新到129,它将被载入,并有一个全新的10年有效期?

    (对于javascript也是如此 .js 文件)

    1 回复  |  直到 10 年前
        1
  •  4
  •   Kevin Hakanson    14 年前

    在查询字符串中使用更改的值可能对您不利。根据谷歌的页面速度 Optimize caching 性能最佳实践:

    在静态资源的URL中不包含查询字符串

    大多数代理,尤其是鱿鱼 通过3.0版,不缓存 带有“?”的资源甚至在他们的URL中 如果缓存控件:public header是 出现在响应中。使能 这些资源的代理缓存, 从引用中删除查询字符串 到静态资源,而不是 将参数编码到文件中 说出自己的名字。

    另外,你可能想重新考虑10年。根据 Header Field Definitions > Expires RFC 2616的章节,最多一年。

    将响应标记为“永不过期”, 源服务器发送过期日期 大约一年后 将发送响应。HTTP/1.1服务器 不应再发送过期日期 未来一年以上。