我有一个使用Cloudflare的网站(例如http://example.com)。没有什么特别的,没有奇怪的页面规则,没有奇怪的设置,免费的计划。
当我转到http://example.com时,我收到了GET http://example.com请求的回复:
Cache-Control:no-cache, must-revalidate
CF-RAY:2b8d0490837f2828-SJC
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html; charset=UTF-8
Date:Sun, 26 Jun 2016 01:52:05 GMT
Expires:0
Pragma:no-cache
Server:cloudflare-nginx
Transfer-Encoding:chunked
Vary:Accept-Encoding
X-Powered-By:Express
请注意,即使在我的原始服务器上启用了响应,响应也没有ETag标头。
当我直接去原始服务器时,例如GET http://01.23.456.789/,我得到了这样的答复:
Accept-Ranges:bytes
Cache-Control:no-cache, must-revalidate
Connection:keep-alive
Date:Sun, 26 Jun 2016 01:56:53 GMT
ETag:W/"4cf8-1558a5557a0"
Expires:0
Pragma:no-cache
X-Powered-By:Express
有谁知道为什么Cloudflare不会转发ETag标头?如何让Cloudflare向前推进ETag? Cloudflare默认不会缓存GET http://example.com请求,因为它是一个HTML页面。
答案 0 :(得分:13)
我与Cloudflare技术支持工程师交谈,他帮助解决了我的问题。对于未来可能遇到同样问题的人来说,解决问题的是:
我为相关网址启用了电子邮件混淆(即删除了ETag标头)。根据{{3}},
Email Obfuscation will need to be disabled, otherwise the ETag headers
will be removed from the response. Email Obfuscation modifies the code
significantly enough it cannot be considered semantically equivalent.
但是,禁用电子邮件混淆仍然无法解决问题。事实证明我启用了一个可以修改HTML的应用程序,因此必须使ETag无效。最后,设置具有禁用安全性,禁用应用程序,禁用该URL的性能的页面规则可以解决问题。
答案 1 :(得分:0)
就我而言,我遇到了同样的情况。
禁用电子邮件混淆和HTTPS自动重写对我来说还不够,因为我已经在Cloudflare应用程序上安装了“更好的浏览器”应用程序(https://www.cloudflare.com/apps/a-better-browser)。
卸载该应用后,将显示Etag
。
答案 2 :(得分:0)
禁用电子邮件混淆和自动 HTTPS 重写,如 Cloudflare support 所述:
<块引用>当使用弱 ETag 标头时,禁用电子邮件混淆和自动 HTTPS 重写以确保 Cloudflare 不会删除 ETag 标头 由您的源站 Web 服务器设置。