1

我试图让清漆缓存响应被分块......(这是可能的,对吧?)

我有以下情况:

1 - 缓存很干净,一切正常(服务清漆重启)

2 - 首次访问 www.mywebsite.com/page

首次访问标头

(没有返回内容长度,并且有分块,太棒了!)

3 - 下次我访问页面时(比如简单的重新加载),它将被缓存..现在我得到了:

2+ 时间访问标头

(现在我们有了内容长度......这意味着没有分块:(不是很好!)

在阅读了一些 Varnish 文档/博客(以及这个:http ://book.varnish-software.com/4.0/chapters/VCL_Basics.html )之后,看起来有两个“最后”返回:return(fetch)return(deliver ) .

强制return(fetch)时,分块编码有效......但这也意味着请求不会被缓存,对吧?虽然return(deliver)缓存正确但添加了 content-length 标头。

我尝试将这些添加到我的 default.vcl 文件中:

set beresp.do_esi = true; (at vcl_backend_response stage)

unset beresp.http.content-length; (at different stages, without success)

那么..如何让 Varnish 缓存与 Transfer-Encoding: 分块一起使用?

感谢您的关注!

4

1 回答 1

1

您是否有理由要分块发送它?分块传输编码是一种笨拙的解决方法,适用于提前不知道内容长度的情况。这里实际发生的是 Varnish 能够在第一次缓存后计算 gzip 压缩内容的长度,因此不必使用解决方法!请放心,在这种情况下您不会错过任何性能提升。

于 2016-09-08T01:03:11.097 回答