像CloudFlare这样的CDN如何运作?


23

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

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

现在,我想知道此机制的技术细节。这是我的一些问题:

  1. CloudFlare是否充当缓存代理?假设我的网站页面上有一堆图片。CloudFlare是否在所有数据中心上缓存所有这些映像,然后从这些数据中心提供服务?

  2. 哪些站点资源受到影响?只有静态的吗?网页本身(HTML文档)如何?如果页面是由服务器动态生成的,该怎么办?CloudFlare如何确保始终提供页面的最新版本?

  3. 对我的站点的POST请求怎么样(例如,访问者通过Ajax上传数据,然后将其存储在数据库中)?这些东西必须在我的服务器上执行。因此,CloudFlare不会(也不能)提高此过程的性能,对吗?那么,CloudFlare只是将Ajax请求中继到原始Web主机吗?

Answers:


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

全面披露:我为CloudFlare工作。


5

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

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

哪些站点资源受到影响?只有静态的吗?默认情况下,什么CloudFlare缓存

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

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

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


1

要添加到达蒙的回复中:

您可以在此处找到一些有用的视频教程,以使用CloudFlare设置最受欢迎/推荐的页面规则:

cloudflare.com/features-page-rules

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.