【问题标题】:how to cache static assets with revision query in URL如何在 URL 中使用修订查询缓存静态资产
【发布时间】:2013-02-07 00:44:08
【问题描述】:

我想为我的静态资产添加一个修订号,以便在更新它们时浏览器会刷新它们 - how to force browsers reload static assets after code deployment?

如果没有修订查询字符串,我可以在 'varnishstat' 中看到命中,我看到它会将请求传递到后端。

如何缓存带有修订的静态资产?

【问题讨论】:

    标签: varnish


    【解决方案1】:

    将您的静态资产正则表达式更改为以下内容:

    if (req.url ~ "\.(jpeg|jpg|png|gif|ico|swf|js|css)(\?.*|)$") {
      return (lookup);
    }
    

    它也会匹配修订版。

    【讨论】:

      【解决方案2】:

      这是一个奇怪的需求,但以下代码应该可以解决您的问题:

      sub vcl_recv {
        set req.url = regsub(req.url, "(\.(jpeg|jpg|png|gif|ico|swf|js|css))\?.*$", "\1");
      }
      

      每次在后端更新资源时,您都需要清除清漆缓存(清除/禁止)。

      【讨论】:

      • 为什么这是一个奇怪的需求?我想缓存静态资产并确保浏览器始终拥有最新版本
      • 例如每次您想清除缓存时,Drupal 都会更新静态修订号。客户端的缓存会是这种情况,但 drupal 的缓存不会。
      猜你喜欢
      • 2021-02-21
      • 2015-08-19
      • 2023-03-04
      • 1970-01-01
      • 2023-03-26
      • 2020-08-05
      • 2018-05-19
      • 2012-09-02
      • 1970-01-01
      相关资源
      最近更新 更多