概述
Cloudflare 的内容分发网络(CDN)是一组分布在不同地理位置的服务器,可确保快速交付 Internet 内容,包括 HTML 页面、JavaScript 文件、样式表和图像。在 Cloudflare 上缓存静态资源可减少服务器负载和带宽,不会因带宽峰值而产生额外费用。
出于多个原因,您应该为您的网站使用 Cloudflare 的 CDN:
用户体验: 没有 Cloudflare 的 CDN,距离您的源 Web 服务器较远的访问者会体验到页面加载速度变慢。Cloudflare 的 Anycast 网络使内容在地理上更接近您的访问者,从而减少页面负载和延迟。
流量峰值: 由于重大新闻发布或在线事件,突然涌入您的网站的流量可能会使源 Web 服务器超载。Cloudflare 的 CDN 可提供您缓存的内容,以减轻源 Web 服务器的负载。
DDoS 防护: 分布式拒绝服务(DDoS)攻击通过用流量淹没其基础架构来中断网站服务。Cloudflare 的 CDN 的网络容量为史上最大 DDoS 攻击的 15 倍,并且可以处理现代 DDoS 以确保您的网站正常运行。
使用 Cloudflare 高速缓存内容
Cloudflare 根据以下因素来缓存静态内容:
- 您的访问者来自哪里,
- 您的访问者使用哪个 Cloudflare 数据中心,以及
- 访问者向特定数据中心请求资源的频率如何。
Cloudflare 仅缓存为请求服务的 Cloudflare 数据中心内的资源,不会缓存:
- 站外或第三方资源(Facebook、Flickr 等)。
- 托管在未代理的(灰色云) DNS 记录中的内容,或者
- 从源 Web 服务器返回的带有 no-cache、private、max-age=0 or 过时的 Expires 标头的内容。
Cloudflare 的 CDN 提供几种缓存自定义选项:
- 通过 Cloudflare Page Rule 为各个 URL 指定缓存行为
- 使用 Cloudflare Workers 自定义缓存
- 通过 Cloudflare Caching 页面调整缓存级别、缓存 TTL 等
Cloudflare 仅基于文件扩展名进行缓存,不按照 MIME 类型缓存。Cloudflare CDN 自动缓存包含某些文件扩展名的文件,默认不缓存 HTML:
bmp | ejs | jpeg | ps | ttf | |
class | eot | jpg | pict | svg | webp |
css | eps | js | pls | svgz | woff |
csv | gif | mid | png | swf | woff2 |
doc | ico | midi | ppt | tif | xls |
docx | jar | otf | pptx | tiff | xlsx |
通过将 Cloudflare Page Rule 创建至 Cache Everything 来缓存其他内容。
Cloudflare 高速缓存响应
CF-Cache-Status 标头输出显示资源是否缓存:
HIT | 在 Cloudflare 的缓存中找到资源。 |
MISS | 未在 Cloudflare 缓存中找到资源,从源 Web 服务器获取。 |
EXPIRED | 在 Cloudflare 缓存中找到资源但已过期,从源 Web 服务器获取。 |
STALE | 资源通过缓存提供,但已过期。Cloudflare 无法联系源站以检索更新后的资源。 |
BYPASS | 源站通过设置为 no-cache、private 或 max-age=0 的 Cache-Control 标头指示源站绕过缓存。开启 Origin Cache-Control 时返回 BYPASS。 |
REVALIDATED | 资源通过缓存提供,但已过时。已通过 If-Modified-Since 标头或 If-None-Match 标头重新验证资源。 |
UPDATING | 资源通过缓存提供,但已过期。资源目前正在由源 Web 服务器进行更新。UPDATING 通常仅针对十分常用的缓存资源显示。 |
缺少 CF-Cache-Status 标头 | 如果缺少 CF-Cache-Status 标头,但您看到其他 Cloudflare 标头(如“CF-RAY”),这表明资源未缓存。使用 Page Rule 实施自定义缓存选项。 |
https://support.cloudflare.com/hc/zh-cn/articles/200172516-%E4%BA%86%E8%A7%A3-Cloudflare-%E7%9A%84-CDN