type
Post
status
Published
date
Apr 1, 2021
slug
summary
快让网站起飞!
tags
建站
网络
CDN
handsome
category
探索新世界
icon
password
之前看过好几位大佬的博客,就是关于怎样利用CDN去加速博客,不过都是阿里云下去设置的,而我自己主要用的是腾讯的云存储,所以对着教程来失败了。
这一次趁着正好有时间,又好好的研究一下。
同时网上我也还没有搜到用腾讯云COS加速handsome的文章,希望能给需要的人一些帮助。
关于网站的加速思路
我把网上教程的思路总结了一下,简单的来说加速分两步走。
- 把handsome的静态资源包括网站上的图片都放在云存储上,访问的时候给服务器减轻负担,提升速度。
- 设置一个CDN加速域名,然后域名添加一条
cname记录,实现全站加速。
我当时候看的时候就在想,做第二步全站加速就好了,为啥还要第一步,感觉有点多此一举。而且做第二步全站加速的时候,第一步放在云存储上的静态资源会怎么样,也会被加速吗?感觉在套娃,我被整晕了。
然后我的网站上大部分的图片都是放在图床上,那么其实我只完成第一步估计也差不多呀,反正网站上就那些内容。
折腾完之后我得到了一些答案:
- 如果只设置第一步,虽然大部分的静态资源都是访问云存储,但是还是会访问到网站主体,我的服务器IP之类的。有了第二步的话(我看大家都是讲
套CDN是吧),访问的就不是我的真实IP,(我看到有人说第一次回源会暴露真实IP还是怎样,我就没仔细研究了)不同地区的人会访问都会连接到就近的CDN节点,访问速度加快。
- 如果只设置第二步全站加速,那么访问网站的时候所有的数据就会从自己的服务器上回源。如果同时设置好第一步的话,一些静态资源就会直接访问云存储,减轻服务器上的负担。(我感觉好像差别不是很大...也有可能是我的理解错误)
操作流程
静态资源CDN
那我们就先操作第一步,把静态资源放到云存储上,大致要做一下这个几件事情
- 腾讯云的对象存储里创建一个存储桶
- 设置好回源配置
- 绑定一个自定义加速域名(也可以不绑定)
- 设置好缓存配置
- 跨域设置
- handsome填入参数
首先是去到
腾讯云的控制台,找到对象存储,并点击左侧边栏的存储桶列表。
然后点击
创建存储桶,填入名称、地域、设置访问权限,其他的可以不做更改。- 名称根据喜好随意填写
- 所属的地域当然选择自己所在的区域
- 访问权限为了安全起见,还是选择私有读写,过会分配权限给CDN域名即可
创建完成之后,页面自动跳转到存储桶的管理界面,我们在左侧边栏找到
基础配置下的回源设置,并选择添加回源规则。
之前不是太懂什么是回源,什么是回源站点。现在仔细想想,源就是源头的意思,也就是资源最早的地方。比如说我现在要访问存储桶里的一张图片,这张图片是
a.jpg,但是存储桶里没有。那怎么办呢?这个时候就可以回源,从回源站点把这个资源下载到存储桶里面,以供访问。
所以在咱们这个设置里面,回源站点就要我们自己的网站地址。
这个里面主要是填写
回源地址,我们如果要填写IP地址且用的是宝塔面板的话,我们需要在宝塔的站点设置上,添加好IP地址,否则会回源失败。(当然解析到我们网站的其他域名也行,都是一样的效果)
好的,添加好回源地址,存储桶这一步的操作暂时就可以结束了。
腾讯云会自动分配一个访问存储桶的域名,我们去到
handsome的后台-速度优化-本地资源云存储里填上https://域名 | QCLOUD,其实就算弄好了,也就是说现在网站的静态资源会从腾讯云分配的域名里面走。
当然啦,这样的加速还不太符合我们的预期,因为现在虽然是访问了腾讯云上的资源,但是还没有CDN加速的特性,可能只是存储桶在哪个地区,哪个地区就快一些。
所以我们接下来给这个对象存储绑定一个
自定义CDN域名,这样的话静态资源就会被CDN加速。腾讯云也提供了一个默认的加速域名,一键开启即可,而且不需要配置ssl证书,其实是非常方便的,即开即用。不过域名有点长,有点强迫症的我还是觉得自己去自定义一个。
我们再次通过腾讯云的控制台进入
内容分发网络,并点击左侧边栏的域名管理,准备添加一个CDN加速域名。
这里要填写的很多,底下还有一个高级配置。

- 首先是
加速域名这里,自定义一个二级域名。比如说我的域名是xhhdd.cc,那么我就可以填写cdn.xhhdd.cc,总之不冲突就行。
- 然后是
业务类型,给网站加速的话一般选择默认的静态加速就可以了。 见下图
- 然后是
源站配置,我们选择cos源,并选择好刚才自己创建的存储桶,然后下方打开私有存储桶访问(如果刚才存储桶设置的不是私有读写的话那就不用)。

最下面这个缓存设置就是真的重点了,我们看它默认有两条规则,第一个就是全部文件遵循源站缓存,第二个就是php等文件不缓存,因为这些文件缓存了基本上会造成登录失败等各种各样的问题,所以我们依旧保留这个,并删除第一条。接下来添加以下的规则。

说实话这个规则是我抄别人的,可能还得根据自己的需求调整一下。
以上,我们的加速域名基本上配置好了,我们还需要做三件事情。
- 如果开了https回源,那么要配置好ssl证书
- 按提示去域名商那配置一条
cname记录,主机填写刚才配置的自定义域名,记录值由腾讯与提供。
- 设置好防盗链等一些安全设置,防盗链记得要把自定义CDN域名也加上去。
最后是最重要的开启跨域访问
跨域访问在对象存储跟内容分发网络这里都可以开启,如果选择是使用自定义CDN域名的,则打开
域名管理高级配置里的Response Header。
接下来我们打开
配置状态的开关,并添加一条规则:- 参数:
Access-Control-Allow-Origin
- 值:
*

最后,在handsome的后台填入
https://自定义CDN域名 | QCLOUD,然后去浏览器强制刷新两次(第一次回源,第二次才使用CDN加速)就大功告成了!可以去腾讯云看看对象存储里面是不是多出了handsome的静态文件,是的话就是设置成功了。或者在chrome下按Fn+F12,看一下js,css文件的链接是不是已经变成了自己的自定义CDN域名,也可以验证有没有成功。
开启全站加速
还是在
内容分发网络这里,再次创建一个域名。那这个域名就是以后即将作为网站的主域名。
那么选定什么呢?
当我们直接选择一级域名时也就是xhhdd.cc时,是可以顺利创建的。但是创建完成之后,我们需要去域名商那里添加一条cname记录。如果没有设置域名邮箱,没有添加过MX记录的话,是没有什么问题的,但是如果添加过MX记录的话,就会有冲突。
这个问题我研究了很久,得出以下几条信息:
- 一级域名的MX记录与cname记录基本上不能完美共存,有的域名商(如阿里云)不能同时添加这个两条记录,有的域名商允许同时添加两个记录,但据说邮箱服务会受到一些影响。
- 可以选择把
www.xhhdd.cc作为网站的主域名去套CDN,然后xhhdd.cc做一个显性或隐性的转发,转发到www.xhhdd.cc。
- 用二级域名添加邮箱记录,如
mail.xhhdd.cc,那么域名邮箱则会变成dd@mail.xhhdd.cc这种形式。当然也可以直接换一个域名去做域名邮箱 那我选择放弃域名邮箱,还是用xhhdd.cc来添加cname记录。
与刚才要填的参数差不太多,其他的都照常。
主要是
源站配置这里我们选择自有源,并且填好我们服务器的ip地址。(当然解析到我们网站的其他域名也行,都是一样的效果)如果是宝塔面板要记得在网站管理那里加上ip地址!(上文也有提示过)
接下来的事情跟刚才基本上一样
- 如果开了https回源,那么要配置好ssl证书
- 按提示去域名商那配置一条
cname记录
- 设置好防盗链等一些安全设置
- 网站能够稳定运行之后,去试一下hsts等提高网页访问速度的设置
我们可以直接ping一下网站,看ip是不是已经变化了。
接下来还可以看一下浏览器的开发者工具里面看一下,找一个之前没被加速的文件

最底下一行的
X-Cache-Lookup会显示CDN有没有命中资源- X-Cache-Lookup:Cache Hit 表示命中
- X-Cache-Lookup:Hit From MemCache 表示命中 CDN 节点的内存。
- X-Cache-Lookup:Hit From Disktank 表示命中 CDN 节点的磁盘。
有时候也会同时返回多条
X-Cache-Lookup,一般有Hit From Upstream代表没有命中。
其他问题
- 已经跟handsome的作者确认过,时光机页面的图片不会更换成我们第一步填写的静态资源域名。也就是说当我们打开时光机页面时,上面的图片依旧是访问本地的
usr/uploads/time路径。据说在后续会解决这个问题。
- 腾讯云跟https有关的
hsts配置、ocsp配置、tls版本设置、强制跳转https,我都开通了,感觉速度上似乎差别不是很大。跟安全有关的设置了带宽封顶与IP访问限频。总之都是一些字面意思比较好理解的功能。
总结
最后捋一下。
我一共设置了两个加速域名,一个是跟存储桶进行绑定的,静态资源访问时的域名。
另一个就是站点的域名,套上了CDN,起到全站加速的效果。
第一次访问站点
所有的文件显示都来自xhhdd.cc
- 其中
大部分静态资源去了我的资源域名handsome.xhhdd.cc对cos存储空间进行拉取资源,并且没有访问到,所以直接返回源站域名xhhdd.cc。同时cos存储空间在源站拉取静态资源,文件列表下多出/usr文件。
- 其中
另一部分资源访问CDN节点没有找到资源,也是直接回源,并且显示CDN命中失败。
第二次访问站点
一部分文件显示来自xhhdd.cc,一部分显示来自handsome.xhhdd.cc
- 其中来自
xhhdd.cc的可以观察到已经被CDN所命中,而handsome.xhhdd.cc则是来自cos对象存储的的静态资源
本文参照
Naraku大佬的博客- 作者:xhhdd
- 链接:https://blog.xhhdd.cc/article/c2caeb34-386d-4929-a4c6-d0c9da7ef9d6
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章



