到目前为止,我了解的是:


您保留当前的Web托管,但是将站点的DNS服务器从当前托管的DNS服务器更改为CloudFlare的DNS服务器。 > CloudFlare从世界各地的多个数据中心为您的网站提供资源。

现在,我想了解这种机制的技术细节。以下是我的一些问题:


CloudFlare是否充当缓存代理?假设我的网站页面上有一堆图片。 CloudFlare是否在所有数据中心上缓存所有这些映像,然后从这些数据中心提供服务?
哪些站点资源受到影响?只有静态的吗?网页本身(HTML文档)呢?如果页面是由服务器动态生成的,该怎么办? CloudFlare如何确保始终提供最新版本的页面?
如何向我的站点发送POST请求(例如,访问者通过Ajax上传数据,然后将其存储在数据库中)?这些东西必须在我的服务器上执行。因此,CloudFlare不会(也不能)提高此过程的性能,对吗?因此,CloudFlare只是将Ajax请求中继到原始Web主机吗?


#1 楼


是的,它是一个缓存的反向代理。
“取决于”。默认情况下,仅缓存图像和CSS之类的内容,但是您可以设置每个区域的缓存级别,并设置页面规则以覆盖缓存的内容或不应缓存的内容。页面规则可以强制静态HTML进行缓存,但是动态内容显然不能。如果您有业务或企业计划,或者通过某些托管合作伙伴注册,就可以使用Railgun技术,CloudFlare将仅获取页面上已更改的信息,即使该信息是动态的也是如此。如果已将CloudFlare设置为缓存所有内容,则需要通过在原始位置上使用缓存标头和/或在CloudFlare UI中的区域中设置缓存TTL来控制缓存超时。
POST必须始终发送到原始位置,因此CloudFlare只是将它们直接传递通过。由于CloudFlare使用Anycast从最近的数据中心为DNS和HTTP提供服务,因此您仍然应该提高性能。

全面披露:我为CloudFlare工作。

#2 楼

只是为了增加一点清晰度:

关于Quora的一篇很好的文章介绍了CloudFlare的工作原理。

哪些站点资源受到影响?只有静态的吗?

“ CloudFlare是否充当缓存代理?说,我的站点页面上有一堆图像。CloudFlare是否在其每个数据中心上缓存所有这些图像?然后从这些数据中心为它们提供服务?“

您可以使用PageRules将缓存扩展到静态内容之外。

注意:我们不会缓存正在使用的第三方资源您的网站(Flickr,Google,Facebook等)。

#3 楼

要添加Damon的响应,请按以下步骤找到有用的视频教程,以设置CloudFlare最受欢迎/推荐的页面规则:

cloudflare.com/features-page -rules

此外,如果您已在当前计划中最大化了可用的页面规则,则很快就可以购买其他规则而无需更改计划。