php - 基于 header 的 Varnish 缓存

标签 php caching varnish

目前我在运行大约 30-40 个不同网站的服务器上运行 Varnish。所有这些网站都使用相同的库来处理请求(每个网站都有自己的域)。然而,其中一些网站非常简单,可以完全缓存。我想要做的是在项目/网站(某些 header )中启用一个标志,告诉 varnish 在交付后缓存请求。这样的构造是否可行,因为我不想为每个可以完全缓存的项目编辑 VCL 并向 vcl_fetch 添加一个条目,例如:

if (req.http.host ~ "<website>")
{
    unset req.http.cookie;
    return (lookup)
}

有没有合适的方法来做到这一点?我确实看过 Varnish 流程图,但无法提出一个好的解决方案。

提前致谢!

最佳答案

希望对您有所帮助。在下面的示例中,自定义 header 用作条件。

sub vcl_fetch {
    if (req.http.Custom-Header == "www.site.com" {
       set beresp.ttl = [...]
       [...]
     }
     elsif (req.http.Custom-Header == "www.site2.com" {
       set beresp.ttl = [...] 
      }
      else {
      [...]
      }
      return(deliver);
}

关于php - 基于 header 的 Varnish 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17726716/

相关文章:

php - 在数组中找到最近的经度和纬度?

Django 按站点缓存和 Vary : Cache

PHP URL 重写

php - laravel 护照撤销和修剪事件监听器没有执行任何操作

python - 在数据库中存储标记化文本?

c# - 使用 Azure Redis 缓存重试策略

drupal - drupal 的最佳缓存器是什么(Boost、xcache 或 varnish)?

node.js - 在我的网站上放慢流氓网络 srappers 并仍然使用 Varnish

symfony - 为什么使用 Varnish 而不是 Symfony 代理?

php - pdo - 作为单独的查询获取多个表的行数?