type
Post
status
Published
date
Apr 1, 2021
slug
summary
快让网站起飞!
tags
建站
网络
CDN
handsome
category
探索新世界
icon
password
 
之前看过好几位大佬的博客,就是关于怎样利用CDN去加速博客,不过都是阿里云下去设置的,而我自己主要用的是腾讯的云存储,所以对着教程来失败了。 这一次趁着正好有时间,又好好的研究一下。 同时网上我也还没有搜到用腾讯云COS加速handsome的文章,希望能给需要的人一些帮助。

关于网站的加速思路

我把网上教程的思路总结了一下,简单的来说加速分两步走。
  1. 把handsome的静态资源包括网站上的图片都放在云存储上,访问的时候给服务器减轻负担,提升速度。
  1. 设置一个CDN加速域名,然后域名添加一条cname记录,实现全站加速。
我当时候看的时候就在想,做第二步全站加速就好了,为啥还要第一步,感觉有点多此一举。而且做第二步全站加速的时候,第一步放在云存储上的静态资源会怎么样,也会被加速吗?感觉在套娃,我被整晕了。 然后我的网站上大部分的图片都是放在图床上,那么其实我只完成第一步估计也差不多呀,反正网站上就那些内容。 折腾完之后我得到了一些答案:
  • 如果只设置第一步,虽然大部分的静态资源都是访问云存储,但是还是会访问到网站主体,我的服务器IP之类的。有了第二步的话(我看大家都是讲套CDN是吧),访问的就不是我的真实IP,(我看到有人说第一次回源会暴露真实IP还是怎样,我就没仔细研究了)不同地区的人会访问都会连接到就近的CDN节点,访问速度加快。
  • 如果只设置第二步全站加速,那么访问网站的时候所有的数据就会从自己的服务器上回源。如果同时设置好第一步的话,一些静态资源就会直接访问云存储,减轻服务器上的负担。(我感觉好像差别不是很大...也有可能是我的理解错误)

操作流程

静态资源CDN

那我们就先操作第一步,把静态资源放到云存储上,大致要做一下这个几件事情
  1. 腾讯云的对象存储里创建一个存储桶
  1. 设置好回源配置
  1. 绑定一个自定义加速域名(也可以不绑定)
  1. 设置好缓存配置
  1. 跨域设置
  1. handsome填入参数
首先是去到腾讯云的控制台,找到对象存储,并点击左侧边栏的存储桶列表
notion image
然后点击创建存储桶,填入名称、地域、设置访问权限,其他的可以不做更改。
  • 名称根据喜好随意填写
  • 所属的地域当然选择自己所在的区域
  • 访问权限为了安全起见,还是选择私有读写,过会分配权限给CDN域名即可
创建完成之后,页面自动跳转到存储桶的管理界面,我们在左侧边栏找到基础配置下的回源设置,并选择添加回源规则
notion image
之前不是太懂什么是回源,什么是回源站点。现在仔细想想,源就是源头的意思,也就是资源最早的地方。比如说我现在要访问存储桶里的一张图片,这张图片是a.jpg,但是存储桶里没有。那怎么办呢?这个时候就可以回源,从回源站点把这个资源下载到存储桶里面,以供访问。 所以在咱们这个设置里面,回源站点就要我们自己的网站地址。
notion image
这个里面主要是填写回源地址,我们如果要填写IP地址且用的是宝塔面板的话,我们需要在宝塔的站点设置上,添加好IP地址,否则会回源失败。(当然解析到我们网站的其他域名也行,都是一样的效果)
notion image
好的,添加好回源地址,存储桶这一步的操作暂时就可以结束了。 腾讯云会自动分配一个访问存储桶的域名,我们去到handsome的后台-速度优化-本地资源云存储里填上https://域名 | QCLOUD,其实就算弄好了,也就是说现在网站的静态资源会从腾讯云分配的域名里面走。
notion image
当然啦,这样的加速还不太符合我们的预期,因为现在虽然是访问了腾讯云上的资源,但是还没有CDN加速的特性,可能只是存储桶在哪个地区,哪个地区就快一些。 所以我们接下来给这个对象存储绑定一个自定义CDN域名,这样的话静态资源就会被CDN加速。
腾讯云也提供了一个默认的加速域名,一键开启即可,而且不需要配置ssl证书,其实是非常方便的,即开即用。不过域名有点长,有点强迫症的我还是觉得自己去自定义一个。

我们再次通过腾讯云的控制台进入内容分发网络,并点击左侧边栏的域名管理,准备添加一个CDN加速域名。
notion image
这里要填写的很多,底下还有一个高级配置。
notion image
 
  • 首先是加速域名这里,自定义一个二级域名。比如说我的域名是xhhdd.cc,那么我就可以填写cdn.xhhdd.cc,总之不冲突就行。
  • 然后是业务类型,给网站加速的话一般选择默认的静态加速就可以了。 见下图
  • 然后是源站配置,我们选择cos源,并选择好刚才自己创建的存储桶,然后下方打开私有存储桶访问(如果刚才存储桶设置的不是私有读写的话那就不用)。
notion image
最下面这个缓存设置就是真的重点了,我们看它默认有两条规则,第一个就是全部文件遵循源站缓存,第二个就是php等文件不缓存,因为这些文件缓存了基本上会造成登录失败等各种各样的问题,所以我们依旧保留这个,并删除第一条。接下来添加以下的规则。
notion image
说实话这个规则是我抄别人的,可能还得根据自己的需求调整一下。
以上,我们的加速域名基本上配置好了,我们还需要做三件事情。
  1. 如果开了https回源,那么要配置好ssl证书
  1. 按提示去域名商那配置一条cname记录,主机填写刚才配置的自定义域名,记录值由腾讯与提供。
  1. 设置好防盗链等一些安全设置,防盗链记得要把自定义CDN域名也加上去。
最后是最重要的开启跨域访问
跨域访问在对象存储跟内容分发网络这里都可以开启,如果选择是使用自定义CDN域名的,则打开域名管理高级配置里的Response Header
notion image
接下来我们打开配置状态的开关,并添加一条规则:
  • 参数:Access-Control-Allow-Origin
  • 值:*
notion image

最后,在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地址!(上文也有提示过)
    notion image
    接下来的事情跟刚才基本上一样
    1. 如果开了https回源,那么要配置好ssl证书
    1. 按提示去域名商那配置一条cname记录
    1. 设置好防盗链等一些安全设置
    1. 网站能够稳定运行之后,去试一下hsts等提高网页访问速度的设置
    我们可以直接ping一下网站,看ip是不是已经变化了。 接下来还可以看一下浏览器的开发者工具里面看一下,找一个之前没被加速的文件
    notion image
    最底下一行的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.cccos存储空间进行拉取资源,并且没有访问到,所以直接返回源站域名xhhdd.cc。同时cos存储空间在源站拉取静态资源,文件列表下多出/usr文件。
    • 其中另一部分资源访问CDN节点没有找到资源,也是直接回源,并且显示CDN命中失败。
    第二次访问站点
    • 一部分文件显示来自xhhdd.cc,一部分显示来自handsome.xhhdd.cc
    • 其中来自xhhdd.cc的可以观察到已经被CDN所命中,而handsome.xhhdd.cc则是来自cos对象存储的的静态资源

    本文参照Naraku大佬的博客
    启用阿里云CDN加速博客
    这篇文章拖了挺久的, 主要是因为懒 ,从备案通过到现在这一个月里一直都在折腾CDN,辗转使用了七牛、又拍、腾讯等等几家服务商,最终还是选择了阿里云。 七牛云,没有镜像存储 又拍云,节点较少,部分地区速度慢 腾讯云,有镜像存储,但首次访问未缓存的资源会重定向到源站,暴露源站 先放一张效果图: 进入,创建一个Bucket 区域:如果服务器也在阿里云,OSS建议选和服务器同一区域 读写权限:建议私有 其它按需选择即可 进入刚才创建的Bucket,左侧找到 基础设置-镜像回源,进入镜像回源并点击设置,创建规则。回源地址可以填写一个 指向服务器的子域名,也可以 直接填写服务器IP 假如使用的是宝塔且填写了服务器IP,需要在宝塔后台站点管理中,将服务器IP添加到域名管理中。即需要保证能访问到你的文件,否则会回源失败。 CDN需要配置2个 www.naraku.cn,博客主域名,用于加速博客 cdn.naraku.cn,资源/图床域名,用于加速图片等资源 加速域名:填写存放资源的域名,如cdn.naraku.cn 源站信息:选择OSS域名,并在下面域名处点击下拉框选择刚才创建的OSS 在域名服务商处配置CNAME指向CDN分配的域名 进入创建的CDN进行配置,主要配置以下几个地方: 加速域名:填写博客主域名,如www.naraku.cn 源站信息: 如果在服务器上搭建博客,则选择服务器,并填入服务器IP 如果是虚拟空间,则选择域名,并填写空间商提供的域名 在域名服务商处配置CNAME指向CDN分配的域名 进入创建的CDN进行配置,主要配置以下几个地方: 如果需要配置其它域名,如我这里配置了一个 naraku.cn并301重定向到 www.naraku.cn ,配置方法与前面配置主域名基本相同,并在服务端来配置重定向 如果使用的是Handsome主题 可在主题功能速度优化-本地图片云存储(镜像)加速中填入http(s)://资源域名 | ALIOSS,如:https://cdn.naraku.cn/ | ALIOSS 刷新一下博客,如果可在OSS中看到缓存的主题静态文件目录/usr/themes/handsome/,即说明配置成功 版权属于: Naraku 本文链接: https://www.naraku.cn/posts/43.html 本站所有原创文章均采用 知识共享署名-非商业-禁止演绎4.0国际许可证 。如需转载请务必注明出处并保留原文链接,谢谢~
    启用阿里云CDN加速博客
     
    docsify的配置+全插件列表跟着学姐去算命