【问题标题】:Referer and Varnish cache conditional code not workingReferer 和 Varnish 缓存条件代码不起作用
【发布时间】:2017-01-14 00:09:40
【问题描述】:

我正在检查 PHP 中的 $_SERVER["HTTP_REFERER"] ,它工作正常,并且基于引用值试图通过 if 条件向用户显示不同的滑块,但即使条件为真,它也不起作用。我认为这是由于清漆缓存服务器始终显示缓存的内容而发生的。请帮助我如何使用清漆服务器实现相同的目标。

【问题讨论】:

  • 你查看过 $_SERVER["X-Forwarded-For"] 吗?
  • @Julqas 感谢您的回复。我认为这不是问题,问题是清漆,因为在开发服务器上同样可以正常工作,并且标头也显示了引用响应标头。
  • 对不起,我看错了,我以为你在谈论 $_SERVER['SERVER_ADDR'] 因为 Varnish 服务器没有显示真实 IP。我的坏..

标签: php conditional varnish referer


【解决方案1】:

默认情况下,Varnish 不关心引用者,因此将为所有请求提供相同的缓存页面。

如果你想要不同的缓存匹配规则,那么你需要在缓存键中使用额外的值修改清漆配置:

# defaults for domain and path will still apply, this is just extra
sub vcl_hash {
    hash_data(req.http.Referrer);
}

https://varnish-cache.org/docs/trunk/users-guide/vcl-hashing.html

这会将所有版本存储为不同的条目并适当地提供缓存匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2022-01-13
    • 2020-04-07
    相关资源
    最近更新 更多