2022 年的当下,百度云加速的接入体验

请注意,本文所提及的 百度云加速 不同于百度旗下的另一款产品 百度智能云

据说百度云加速现在跟 Cloudflare 停止合作了,也就是说,(理论上)可以在接入 Cloudflare 的同时接入百度云加速了。

因此,咱在当下尝试下百度云加速的接入(帮各位扫个雷,哈哈)

顺带提一嘴,百度云加速现在免费套餐的流量缩水了,从原来的 10G/天 变成了 5G/天1

接入

在登录百度云加速之后,其网站会显示一个大大的立即接入

在接入时记得选择 CNAME 方式接入(不然和 Cloudflare 共存也就没意义了)

在添加完加速域名之后,进入到添加 DNS 解析记录的过程

其中,第一个 TXT 记录用于验证域名归属

第二个 CNAME 记录用于域名解析

在最后,按照咱一贯的风格,自然是要选择免费版了(

之后,记得上传下证书,免得造成部分生产环境异常

之后便可以进行测试了,以及修改缓存设置

缓存设置

百度云加速会在网站的响应标头上加上一个 yjs-cachestatus 来反馈是否成功缓存

默认情况下,百度云加速支持缓存的文件还是挺多的2

问:哪些类型的文件或资源将不会被缓存? 答:并不是所有文件都会缓存,以下后缀文件在符合相应的cache-control的情况下会被缓存

css/js/jpg/jpeg/gif/ico/png/bmp/pict/csv/doc/pdf/pls/ppt/tif/tiff/eps/ejs/swf/ midi/mid/ttf/eot/woff/otf/svg/svgz/webp/docx/xlsx/xls/pptx/ps/class/jar

并且默认的缓存时间只有两个小时,两个小时之后便会回源。这对于需要经常更新的文件还好,但是对于 main.css 这类万年也不会更新的 css 文件来说,便有些短了;对于源站来说,大量的文件回源也是不小的压力。

但百度云加速不愧是跟 Cloudflare 合作过的大厂(,跟 CF 一样注:在百度云加速中现在称为特定页面规则,页面规则限制三条

因此我选用了曲线救国的方式来实现。因为百度云加速的缓存策略可以选择遵循源站,因此我选择直接在源站的 Nginx 配置上「动刀子」

以我的博客 blog.ascn.site 为例,在百度云加速的特定页面规则中添加这样一条规则

1
2
3
4
5
6
添加URL:blog.ascn.site/*
规则配置:
    缓存粒度设置:所有都缓存
    节点缓存有效期:遵循源站
    浏览器缓存有效期:1小时
    永久在线:ON

「浏览器缓存有效期」和「永远在线」可以按照需求来修改,只要能把节点缓存有效期设置为遵循源站就可以

之后,去修改源站的 Nginx 配置。此处贴一下我源站的配置(部分):

blog.ascn.conf

我分别配置了百度 URL 和 sitemap 文件缓存时间为 30 分钟,RSS 和 Atom 为 5 分钟,动态文件(虽然本身也就没有)不缓存,静态文件缓存 30 天,以及一个保底缓存 30 天,推荐按需求在进行修改。

之后便可以使用 cURL 之类的工具,或者浏览器的检查模式来查看缓存状态。

常见的缓存状态有

MISS 为未缓存

HIT 为已缓存,并成功由缓存提供

REVALIDATED 为已缓存,但缓存过期了,需要回源校验

小插曲

在修改源站的 Nginx 配置时,出现了一次事故(静态资源 404 仂),排了一圈错,甚至还在本地跑了个 Nginx 服务器来排错。最后发现是因为我没写 root 目录,root 目录在一个 location 里,笑死

还顺带在某个大佬群里吐槽了一下(此处给群打个广告

后记

怎么评价百度云加速呢…就其本身来说,免费给小网站提供 CDN 服务这点是非常值得赞一个的(👍)。

但之前跟 Cloudflare 合作的时候,一旦接入百度云加速就无法接入 Cloudflare 这一点倒是需要点名批评的。

因为接入过一次百度云,我的域名被 Cloudflare Pages 屏蔽,以至于后面甚至写出了 关于我博客域名被Cloudflare Pages屏蔽那档子事 | Leao’s Blog | Leao的博客 这种曲线救国的文章

不过随着百度云加速现在停止与 Cloudflare 的接入,这种情况应该不会发生了(吧)

最后,希望百度多做一些类似百度云加速这类「能用」的服务,不要总是搞百度网盘那一套,免得再出现「红颜祸水事件」(笑

参考

  1. 百度云加速-套餐版本介绍

  2. 百度云加速-免费CDN、网站攻击防护、SEO优化工具

  3. Nginx源站缓存过期时间的配置方法

  4. 可能是最被误用的 HTTP 响应头之一 Cache-Control: must-revalidate - 知乎