默认的,cloudflare这家服务商的免费CDN服务只缓存图片和js、css等一些资源型文件,也就是说,网页是不缓存的,也就是说,如果你的web服务器慢了点或者跟cloudflare的连接速度差了点,那其实网站并不会有效加速的……

官方说明:https://support.cloudflare.com/hc/en-us/articles/200172516-What-file-extensions-does-CloudFlare-cache-for-static-content-

我看到网上有文章说这个问题,因为不缓存html网页,所以不建议用cloudflare,但,知其一不知其二……其实官方同时也给了方法进行html强制缓存的,我测试了一下,不仅可以缓存html,而且在SSL/https状态下也是可以缓存的,太爽哦,列出方法:

登陆cloudflare以后,点进你的域名,然后“Page Rules”,创建一个规则,如果你用的也是wordpress的话,可以把我的后台路径也复制进去:

首先创建强制缓存规则

我这里用的是/archives/*这个路径,其实也可以直接用/*来全站缓存,但我测试了一下,好像容易导致后台出问题,详细的大家可以自行测试一下。cache everything可以理解为无条件缓存,所以这种选项最好别用在搜索以及后台管理路径,你懂的……

第一项必须,第二项是可以选缓存时间,第三项看你个人喜好,默认是灰色不生效,需要点一下on/off开启为绿色,意思是永远在线,也就是说如果你的web服务器挂了,那么这个选项可以保持页面仍然可以打开,但好像有时限,总之别挂太久就不会影响网站访问的。

然后我添加的后台规则

bypass就是直接跳过缓存系统,向后端服务器发出请求。

最终就是这样

因为这两个路径不冲突,所以不需要注意顺序,如果相互之间有包含关系的话,要留意顺序,避免出问题。

来对比一下:

本站首页是不缓存直接透传到后端服务器的:

 

文章页面是缓存的,注意画圈的地方:

可以看到,HIT状态说明在缓存中进行了命中,有效缓存了网页哦

Share

8 thoughts on “高效利用cloudflare进行网页缓存

  1. 您好!

    请教下,在您这里使用 cloudflare 缓存html时,同时使用了 varnish 么?我在上面的截图中,没有看到varnish 是否工作的信息。

    谢谢!

    1. cf这几天好像被攻击,我上周末开始没用了,如果你有用到cf并且同时用varnish的话,我之前文章里面varnish配置文件里的set resp.http.X-Cache = "HIT_us3"或者miss这个http头会看到运行状态的。

  2. cloudflare有wordpress插件,开启Automatic Cache Management。更新文章等内容时会更新缓存页面。

    1. 谢谢,不过解决的不是相同问题哦,api或者插件只是代替手工操作的过程,但默认情况下,cf是只缓存图片什么的,不缓存网页的

      1. 我的意思是,用这个强制缓存后。文章更新,评论更新不用单独清理页面。
        而是自动的清理缓存。不用等待缓存过期时间。

  3. 您好!

    菜鸟新手,请教一下,如果使用cloudflare, Varnish 的 vcl 是否需要特别设置?

    我看一些外文的资料说是需要在 nginx 配置文件 和 Varnish的 vcl中 判断 cloudflare 过来的真实ip 是多少....

    中文资料中,很少有提到这个的,有点头大。

    请指教!

    顺祝新年快乐!

    1. 首先,不需要特殊设置,你的源服务器能正常浏览,则cdn就能正常使用。
      然后么,cf的Network里面有一项True-Client-IP Header,看名字,你懂的,不过么,这个需要付费版本才行,我用免费的,看不到具体选项。

发表评论

电子邮件地址不会被公开。 必填项已用*标注