清漆和http标头

时间:2011-05-23 14:54:32

标签: varnish

我是Varnish的新手,我想知道Varnish是否支持使用http标头进行缓存。 我们设计了一个Rest基础Web服务,我正在考虑使用Varnish来缓存结果。 有多少请求信息(apikey)是通过http头传递的,我想知道Varnish在检查传入请求(vs查询字符串)时是否可以考虑它。

1 个答案:

答案 0 :(得分:10)

是的,你可以。该API密钥应该如何考虑?如果您希望为每个用户提供唯一的缓存条目,则仅在特定用户多次请求相同数据时使用缓存。通过设置正确的Cache-Control HTTP Response标头(尽管未重新验证数据新鲜度),您可以在不使用清漆等高速缓存代理的情况下获得很长的路要走。

在Varnish中至少有两种方法;

  1. 让您的应用程序返回HTTP-Response标头 Vary:apikey 。如果apikey请求标头相同,则指示任何HTTP级缓存(如清漆)仅重用缓存结果

  2. 或者,更有效地修改vcl配置中的vcl_hash函数以考虑apikey标头。

      

    sub vcl_hash {       set req.hash + = req.http.apikey;   }