caching - 根据自定义 header 进行 Varnish 缓存

标签 caching varnish varnish-vcl

我正在使用 Varnish 来提供网站服务,但需要根据地理位置进行缓存。我编写了一个小型 Vmod,它使用 Ip2Location 设置一个请求 header ,其中包含国家/地区代码,然后通过 Apache 传递到我的应用程序(Magento),Apache 提供相关内容,但我还需要 Varnish 根据国家/地区代码进行缓存.

有什么办法可以实现这一点吗?

最佳答案

我已经对此进行了排序。

在 vcl_hash 子例程中,我需要将国家/地区代码添加到哈希数据中。

sub vcl_hash {
     hash_data(req.url);
     if (req.http.host) {
         hash_data(req.http.host);
     } else {
         hash_data(server.ip);
     }
     hash_data(req.http.X-Country-Code);

     return (hash);
}

我使用的默认 vcl 已注释掉整个 vcl_hash 子例程,因为它使用 req.hash 而不是 hash_data(),后者在 Varnish 3 中不再可用,因此请根据需要进行调整。

关于caching - 根据自定义 header 进行 Varnish 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22404468/

相关文章:

android - 在android上缓存图像几天

javascript - onbeforeunload 处理程序真的会停止我的页面缓存吗?

chef-infra - Varnish HAproxy Recipe

caching - 如何配置 Varnish 来缓存范围请求?

optimization - Varnish,具有提前退出功能的自定义子例程

c - 如何在 OpenGL 中管理缓存纹理?

c# - 具有缓存和 SqlMethods 的存储库模式

apache - Varnish、Nginx、SSL - IP 检测问题

python - 为什么 Django 不在 Varnish 代理后面生成 CSRF 或 session Cookie?

在运行 Varnish Cache 的服务器上调试代码