光油ESI:
回答
这看起来像清漆gzip的一个奇怪的错误。如果你获得了压缩块通过ESI并且它不在缓存中(MISS),你会得到这个奇怪的符号。如果你从缓存中得到这个块,一切都可以。解决的办法是禁用的gzip用于内部路由:
if (req.url ~ "/_internal") {
# Telling ESI that we do not support gzip
remove req.http.Accept-Encoding;
.....
救了我这个:) – Layke
看起来你有双重压缩ESI内容
This chapter解释光油如何ESI加工过程中的工作用gzip。我真的很喜欢这句话:
从理论上讲,希望在实践中,你在上面所读到的所有内容在启用ESI时都应该适用,如果不是,那么它就是你应该报告的错误。
长话短说,Varnish的工作原理:在第一次请求页面时(缓存未命中),一个页面直接从网页服务器通过Varnish渲染。之后 - 页面被放入缓存存储,因此下一个请求将从存储中加载(缓存命中)。
不知何故,第一请求页面中呈现ungzipped,但被放入存储gzip压缩。这是发生错误的地方。由于nginx总是尝试gzip内容,因此我们在ungzip页面中将gzip包括(ESI期间)。
这种行为在提到文档章节解释说:
查找过程中,我们忽略任何“接受编码”中的对象有所不同:字符串,以避免一个gzip和gunzip'ed对象的版本,清漆可根据需要进行枪支压制。 (我们落实查找时间这一点魔法,使存储在持久存储任何对象可以有或无gzip的支持,使使用。)
所以,这个问题就可以“解决”有一种秒杀 - 通过迫使光油ESI处理期间总是发送ungzipped含量(因为它是在由one of the answers提到klipach):
# www.vcl
sub vcl_recv {
# ...
if (req.url ~ "/_internal") {
# Telling ESI that we do not support gzip
remove req.http.Accept-Encoding;
return(lookup);
}
# ...
}
- 1. 光油未处理ESI包括
- 2. 光油4 ESI:bereq.url不读ESI SRC标签内的网址
- 3. 递增页面浏览次数与上光油和ESI
- 4. Symfony2中,上光油和ESI导致奇怪的行为
- 5. 如何使光油停止缓存ESI碎片
- 6. 为什么使用光油在ESI碎片上得到503服务不可用?
- 7. 光油安全
- 8. 光油和IIS
- 9. 光油HAproxy食谱
- 10. 光油忽略ttl
- 11. 光油重定向
- 12. Pressflow 5和光油
- 13. 光油未配置?
- 14. 光油宽限期
- 15. obj.ttl在光油4.0</p> <p>光油4.0
- 16. 光油#找不到符号
- 17. 光油:Cacheble但不缓存
- 18. 光油重定向域根
- 19. 光油vcl_hash删除参数
- 20. 光油和SSL与庞德
- 21. Apache和光油HTTP/HTTPS
- 22. 光油:VCL〜与req值
- 23. 光油Backend_health - 还在生病
- 24. 光油:大师冥想
- 25. 光油配置与phpMyAdmin和
- 26. 光油统计只针对
- 27. 与域名光油配置
- 28. 光油缓存移动
- 29. 光油4:远程缓存
- 30. 光油nginx缓存问题
此bug已也固定在清漆3.0.3 [清漆缓存3.0.3](HTTPS: //www.varnish-cache.org/releases/varnish-cache-3.0.3) – kjszymanski