我的网站同时使用了 CloudFlare 和 MaxCDN;MaxCDN 处理图片和脚本,而 CloudFlare 处理 HTML 页面(就 CDN 而言)。我没有为 MaxCDN 使用自定义子域名(即我使用他们的 URL 而不是我自己的子域名)。
我在 Chrome 中查看我网站的标头,它显示 CloudFlare 缓存是 MaxCDN URL 的命中。啊?发生了什么事?CloudFlare 如何(以及为什么)在 MaxCDN URL 上缓存资源——我以为 CloudFlare 只在您自己的域上缓存资源?
我之所以问这个问题,是因为理想情况下,我希望我的缓存堆栈是 CloudFlare -> MaxCDN -> 我的服务器。换句话说,如果 CloudFlare 有缓存资源,它应该为其提供服务;如果没有,它应该将用户发送到 MaxCDN(适用时,例如获取图像和脚本)。所以首先我需要了解发生了什么。
答案1
好的,我明白发生了什么事了。
我们的域名受 Cloudflare 保护 - 包括所有静态资源。当 MaxCDN 从我们的域名检索静态资源时,Cloudflare 会为其提供资源。MaxCDN 不仅会抓取静态资源,还会副本静态资源上的标头。因此,当 MaxCDN 提供这些静态资源时,Cloudflare 似乎正在缓存它们,但事实上 Cloudflare 并没有这样做——这些标头是过时的标头。
TLDR;Cloudflare 并没有缓存 MaxCDN 提供的资源,只是看起来像是。
答案2
Cloudflare 不会缓存 HTML 页面,除非您使用页面规则明确告知它,但如果图像和静态资源存在于域中,它会缓存它们。Cloudflare 只会缓存您添加到 Cloudflare 的域中的内容,因此如果某些内容位于 maxcdn.com 域中,则它无法缓存它。
我可以帮你看一下,但你需要分享实际的 URL。CDN 很复杂,你描述你认为正在发生的事情不足以解决问题。
答案似乎很简单 - 域名 hfa-azadinetwork.netdna-ssl.com 在 CloudFlare 上。没有其他解释对我来说是合理的。如果它意味着另一个 CDN,那么可能存在合作协议。有趣的是,我访问的是悉尼 CF 节点,而不是奥克兰缓存,我知道奥克兰缓存离我在新西兰更近。只要它被缓存在某个地方,你可能不太在意是谁缓存的,只要它快速可靠就行,对吧?
更新-参见上面的实际答案,MaxCDN 复制 CF 标头。