![Cloudflare 和 Cache-Control 行为用于缓存完整的网页吗?](https://linux22.com/image/556959/Cloudflare%20%E5%92%8C%20Cache-Control%20%E8%A1%8C%E4%B8%BA%E7%94%A8%E4%BA%8E%E7%BC%93%E5%AD%98%E5%AE%8C%E6%95%B4%E7%9A%84%E7%BD%91%E9%A1%B5%E5%90%97%EF%BC%9F.png)
我正在尝试使用 Cloudflare,主要是为了在高峰时段重温我的网络服务器的负载。我刚刚注册,它似乎正在运行(我的所有流量都被代理了),但 Cloudflare 似乎没有缓存任何东西。
我的 Web 服务器明确发送了 Cache-Control 标头,其变化范围在 1 分钟(即 Cache-Control:max-age=60,public)到 7 天之间。我希望这样我的 Web 服务器就不会在一分钟内两次提供完全相同的页面。但是,如果我查看 Web 服务器的 apache 日志,每个请求都会直接代理到 Web 服务器,即使我在一分钟内多次请求完全相同的资源。
这是预期的行为吗?如何让 CF 提供我的网站的缓存版本?
答案1
我实际上在 CloudFlare 工作并且想加入其中。
-请记住,缓存需要几天时间才能建立,并且这取决于静态资源的请求数量。
-还有一点要记住,我们只会代理您在 DNS 设置中设置的内容(子域上的橙色云)。例如,如果您有图像或 CDN 子域,您需要确保它已添加到 CloudFlare 中并被橙色云覆盖。
答案2
CloudFlare 在请求中发送了哪些标头?它可能只是试图重新验证内容(如果它发送Cache-Control: max-age
自己的标头),并且在其控制面板中可能会有一些选项可以关闭此功能。
如果每次都发出一个全新的请求,那么我敢说您几乎肯定没有正确设置标头(将 改为,
,;
或类似的简单设置),这会让 CF 感到不安。在这种情况下,您最好上传tcpdump -s 0
CF 和 Web 服务器之间的一些请求/响应的数据包转储(用于捕获整个对话),以便我们检查标头并告诉您遗漏了什么。