我是Varnish的新手,我想知道Varnish是否支持使用http标头进行缓存。 我们设计了一个Rest基础Web服务,我正在考虑使用Varnish来缓存结果。 有多少请求信息(apikey)是通过http头传递的,我想知道Varnish在检查传入请求(vs查询字符串)时是否可以考虑它。
答案 0 :(得分:10)
是的,你可以。该API密钥应该如何考虑?如果您希望为每个用户提供唯一的缓存条目,则仅在特定用户多次请求相同数据时使用缓存。通过设置正确的Cache-Control HTTP Response标头(尽管未重新验证数据新鲜度),您可以在不使用清漆等高速缓存代理的情况下获得很长的路要走。
在Varnish中至少有两种方法;
让您的应用程序返回HTTP-Response标头 Vary:apikey 。如果apikey请求标头相同,则指示任何HTTP级缓存(如清漆)仅重用缓存结果
或者,更有效地修改vcl配置中的vcl_hash函数以考虑apikey标头。
sub vcl_hash { set req.hash + = req.http.apikey; }