受欢迎的博客标签

Cloudflare:如何使用 Cloudflare的Page Rules 规则 CDN 来缓存图片、音频和视频文件 (How to Offload Your Server by Using CloudFlare – Cache Everything?)

Published

Table  of Content

1.建立Page Rules 规则 CDN 来缓存图片文件

2.Cloudflare全站缓存方案 

(1)建立Page Rules 规则 CDN 来缓存动态页面 

(2)建立Page Rules 规则 CDN 不缓存后台动态页面 

 

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 等
对于 Free、Pro 和 Business 客户,Cloudflare 的 CDN 可缓存的文件大小上限为 512MB,对于 Enterprise 客户为 5GB。

Cloudflare 仅基于文件扩展名进行缓存,不按照 MIME 类型缓存。Cloudflare CDN 自动缓存包含某些文件扩展名的文件,默认不缓存 HTML:

bmp	ejs	jpeg	pdf	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 缓存图片, js, css 等其它文件,但不会缓存音频和视频文件。

 

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 实施自定义缓存选项。

 

可以通过创建页面规则来缓存这些不在列表中的文件. 免费CLOUDFLARE用户最多只能创建3条, PRO用户能创建20条。

1.建立Page Rules 规则 CDN 来缓存图片文件 

点击导航条, Page Rules 来建立规则

*sohokey.cn/*.jpg
Browser Cache TTL: a year
Cache Level: Cache Everything
Edge Cache TTL: a day

上面三个选项的意思是:

*sohokey.cn/*.jpg 规则

Browser Cache TTL: a year 缓存一年

Cache Level: Cache Everything 缓存所有

Edge Cache TTL: a day 边缘缓存一天

规则配置完毕点击 save and depoly 保存并生效。

2.建立Page Rules 规则 让 Cloudflare 来缓存音频和视频文件

创建页面规则缓存所有

*justyy.com/*.mp4*
Browser Cache TTL: a year
Cache Level: Cache Everything
Edge Cache TTL: an hour

通过这个缓存所有的规则, mp4 文件就可以被正确的缓存了.. 考虑到音频视频文件一般情况下不太可能被更新, 所以可以大胆的设置缓存有效期为1年. mp4*后面可选匹配多个字符是为了兼容wordpress因为WP会在视频和音频URL地址后面加上参数, 如: a.mp4?_=1.

通过以下命令来验证一下:

curl -svo /dev/null https://justyy.com/wp-content/uploads/2016/07/有趣是最好的春药.mp4

在输出的命令中则会有:

CF-Cache-Status: HIT

这代表了已经被缓存了

 

访问网址,按F12,查看 响应头

https://www.iaspnetcore.com/blog/blogpost/572ea4e86ceb7b0ff46dfd79/nginx-usage-configuration-and-error-handling-ubuntu

未被缓存

CF-Cache-Status: DYNAMIC
CF-Cache-Status: REVALIDATED
REVALIDATED(重新验证)

https://justyy.com/archives/3310

 

建立Page Rules 规则 CDN 来缓存动态页面 (Cloudflare全站缓存方案)

goto https://dash.cloudflare.com->rules(Page Rules)

step 1:create page rules-Cache everything

浏览器缓存 TTL: 30 分钟, 缓存级别: 缓存所有内容, 边缘缓存 TTL: 2 小时

www.iaspnetcore.com/*
Browser Cache TTL: a year
Cache Level: Cache Everything
Edge Cache TTL: an hour

Edge TTL(边缘缓存)

时间是让 CLOUDFLARE服务器多久之后去你的原服务器检查内容是否要更新. 免费的最快能设置成 2小时, 

Cache Level(缓存级别)select “Cache Everything(缓存所有内容)”

Cache everything

 

step 2: create another page rules-Bypass Cache

指定 wp-admin 或者 wp-* 下的URL 不进行缓存

www.iaspnetcore.com/Blog/edit/*
服务器端排除: 关

 

useful links

How to Offload Your Server by Using CloudFlare – Cache Everything?