Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 当通过不匹配的ETag或更早的修改日期时,清漆是否应达到要求?_Ruby On Rails_Http_Caching_Reverse Proxy_Varnish - Fatal编程技术网

Ruby on rails 当通过不匹配的ETag或更早的修改日期时,清漆是否应达到要求?

Ruby on rails 当通过不匹配的ETag或更早的修改日期时,清漆是否应达到要求?,ruby-on-rails,http,caching,reverse-proxy,varnish,Ruby On Rails,Http,Caching,Reverse Proxy,Varnish,我们目前正在添加一个清漆实现,看看是否适合坐在Rails应用程序前面 我们希望Varnish缓存API调用的结果,并且仅当客户端的ETag与Varnish中存储的ETag不匹配或者客户端的修改日期早于Varnish时,才会命中应用程序 到目前为止,我还没有看到Varnish将这些值考虑在内 我们只在辅助请求在最大期限内时获得缓存命中 这是预期的行为吗?这是预期的行为,Varnish当前未重新验证缓存内容 有一些实验工作可以做你想做的,几个月后可能会或可能不会在Varnish 4.0中结束 同时,

我们目前正在添加一个清漆实现,看看是否适合坐在Rails应用程序前面

我们希望Varnish缓存API调用的结果,并且仅当客户端的ETag与Varnish中存储的ETag不匹配或者客户端的修改日期早于Varnish时,才会命中应用程序

到目前为止,我还没有看到Varnish将这些值考虑在内

我们只在辅助请求在最大期限内时获得缓存命中


这是预期的行为吗?

这是预期的行为,Varnish当前未重新验证缓存内容

有一些实验工作可以做你想做的,几个月后可能会或可能不会在Varnish 4.0中结束

同时,您可以做的是人为地设置一个较短的TTL,并设置一个与所需TTL相等的宽限期。在这种配置下,当一个请求进入Varnish时,只要缓存的条目有一个ETag,Varnish就会将一个IMS请求发送到后端,否则它将是一个普通请求


副作用是,如果后端关闭或返回500,Varnish也会发送缓存条目,这可能是您想要的,也可能不是您想要的。

我所做的是将哈希函数设置为使用提供的etag

这意味着客户机对没有etag提供的对象的第一个请求将获得该对象本身


任何后续请求,或任何为etag提供标题的请求,都将获得一个对象或304。

Uhm,您是否编辑了该问题,或者我是否误解了该问题并完全回答了其他问题/