静态博客访问优化之终极解决方案


前言


本人咸鱼学生一枚,没多大见识,以下有任何说的不对的地方,欢迎大家指正。

首先本教程是基于 域名已经备案 的前提下进行的,理论上,任何静态页面都可以使用本教程,哪怕是你写的一个小demo网页,想show给别人看,也可以使用,前提是域名已经备案
域名没有备案的也不要灰心,这里我给出三个解决方案

一、就是去备案(这不废话吗?)
备案一般必须要有域名服务商的服务器才行,而买服务器又得花很多钱。
(我们玩Hexo的口号是什么?白嫖!)
那么没服务器怎么办呢?
——备案授权码!
上哪搞呢?
鲁迅曾经说过:有需求的地方,必有市场!
(鲁迅:没错,什么都是我说的!)
这就得靠我们强大的某淘了,给个关键字:XXX云服务号

二、就是不备案
强行推广一波我的另一篇优化文章,一样可以获得很高的访问速度:Hexo博客优化

三、使用国外的云服务

备案是“中国特色”,国外的服务器是没有备案一说的。可以尝试 谷歌云 或者 亚马逊的AWS,这里不做过多介绍。

核心方案

开门见山的说,今天的主角:对象存储 + CDN

方案其实就是将自己的静态网页文件放到云服务商提供的 对象存储 中,而 对象存储 一般提供的都有pages服务,而且访问速度绝对要远比代码托管平台提供的pages服务快的多,但是这个pages服务,一般只有绑定了域名才可以开启,而且也只能绑定已备案的域名,最重要的是我们还可以使用云服务商提供的CDN,这样又进一步提升了访问速度,这绝对碾压代码托管平台的pages服务,任你再怎么优化也是没有对象存储快的,更何况还有CDN(付费的当然比免费的好用)。

这个方案的好处是:用远低于购买服务器的价格,就可以获得服务器级别甚至更强的访问性能!

其实会玩的人看到这里,就已经明白怎么搞了,但是为了很多小白我还要再啰嗦一下。

科普

再讲解具体步骤之前,让我们先了解一些基础概念,以便有更好地阅读体验,大佬请忽略

对象存储:即每个文件都是一个对象, 所有的文件实际是都是在同一个文件夹内,只不过其前缀不同罢了,如果不能理解,就当是一个存储文件的网盘吧。

CDN: 全称Content Delivery Network即内容分发网络。 CDN加速意思就是在用户和我们的服务器之间加一个缓存机制,通过这个缓存机制动态获取IP地址根据地理位置,让用户到最近的服务器访问,从而可以得到更快的访问速度。

源站:即真正存储网站的服务器。(这里指的是我们的对象存储服务器)

回源: 是指CDN服务器缓存的资源过期后,从源站获取最新的访问资源,然后再缓存到CDN服务器,供下次访问

各云服务商的价格对比


云服务商有很多,大家可以根据自己的喜好选择,这里我只提供下参考,说的不对的地方请多多指正。

可能很多人会问,说好的白嫖呢?看下价格就明白了,花不了多少钱的。

服务商的选择因素有很多,比如服务、价格、稳定性等,由于我本人接触云服务这方面时间较短,没什么发言权,那我就只谈谈我们这些「平民」最关心的价格这方面,做个价格对比。

提供对象存储的云服务商有:阿里云、腾讯云、七牛云、又拍云等。
考虑到各服务商的价格可能会有所变动,本节目前提供的价格参考日期为2019.11.26。

阿里云

阿里云官网

先参考阿里云官方的计量项和计费项OSS计费CDN计费 文档。

  1. CDN的计费方式有两种:按流量计费 和 按带宽峰值 计费,这里推介选择 按流量计费

  2. OSS计费项有很多(各种请求和以及所占容量大小的计费等,都很少,这里不做比较),对于几十M的静态博客来说:

    • 当只用 OSS 时,主要费用就是
      • 外网流出流量 的费用!
      • 00:00-08:00(闲时):0.25元/GB
      • 8:00-24:00(忙时):0.50元/GB
    • 当使用 OSS+CDN 时,因为CDN需要到源站获取资源,就不需要从外网获取了,所以这时的费用就是
      • 回源流量 + CDN流量费用
      • 0.15元/GB + 0.24元/GB = 0.39元/GB
  3. 是不是很便宜?相比于购买服务器。

腾讯云

参考腾讯云官方文档 对象存储COS计费 CDN计费

  • 当只用COS时
    • 外网下行流量费:0.5元/GB
  • 当用COS + CDN时
    • 回源流量CDN流量 = 0.15元/GB + 0.21元/GB = 0.36元/GB

值得一说的是:腾讯云对这两个服务的新用户是有半年的优惠的。

COS:免费50GB 标准存储容量,6个月

CDN:送6个月的免费流量,每月50G,随便High!

七牛云

七牛云官网

  • 七牛的对象存储10G内是免费的
  • 外网流出流量费用:0.29元/GB
  • CDN回源流量费:10G内免费
  • CDN-HTTP下载流量费:10G内免费
  • CDN-HTTPS下载流量费:0.28元/GB
  • CDN-HTTP + 对象存储 = 免费
  • CDN-HTTPS + 对象存储 = 0.28元/GB
  • (因为回源10G内免费,就只剩下CDN流量费了)

七牛是不是很良心?但是有次使用中,七牛的控制台竟然崩了,控制台居然都能崩掉。

总结

我还是比较推介大家用七牛云,当然求稳的话还是阿里云,毕竟大公司。

我曾经看过一个关于阿里云、腾讯云、华为云的横向评测:结果就是华为云以很低的延迟和很高的带宽碾压另外两位。

具体配置

各服务商的配置大体相同,不做过多赘述,这里以腾讯云为例

创建存储桶

  1. 登录腾讯云,点击右上角控制台,找到云产品,开通对象存储服务。

  2. 存储桶列表->创建存储桶-> 填写信息

    • 所属地域 选择离自己位置最近的即可(创建后不可更改)
    • 访问权限 选择 公有读私有写
    • 标签 无所谓

上传文件到COS中

  1. 继续操作,点击左侧 工具->客户端下载-> 选择对象系统的 COSBrowser 下载 -> 然后安装即可

  2. 点击右上角 账号 下的访问管理->左侧的访问密钥

  3. 可能会有风险提示,点击继续使用

  4. 复制 SecretIdSecretKey 这两个是读写COS的密钥,不能泄露!

  5. 打开 COSBrowser,输入刚才复制的两个值,点击 登录

  6. 在 COSBrowser中,左下角点击 同步

    • 本地文件夹选择 Hexo根目录中的public文件夹

    • (public文件夹中的文件为Hexo生成的静态网页文件,我们需要将这些文件放到COS中,供别人访问;git部署的文件也是这些文件!)

    • 存储桶目录选择刚才创建的存储桶,存储桶目录留空(目的:将public文件夹中的文件上传到存储桶的根目录)

    • 点击 开始同步

  1. 之后可以到网页版的控制台确认文件有没有上传上去。

开启pages服务

  1. 回到控制台,对象存储 -> 存储桶列表 -> 基础配置 -> 静态网站 -> 开启
  2. 访问节点:即 该COS的访问地址
  3. 强制 HTTPS:建议开启
  4. 索引文档(主页):填 index.html
  5. 错误文档(404页面):如果有404页面填上404页面的地址,如果没有留空即可。
  6. 重定向规则:设置发生4XX错误时,要填跳转到哪个页面,可以不配置。
  7. 保存

之后就可以直接复制 访问节点 的地址到浏览器打开,看能不能访问。

绑定域名并开启CDN

  1. 对象存储 -> 存储桶列表 -> 点击刚才创建的存储桶 -> 点击 域名管理

  2. 找到 自定义域名加速,点击添加域名(只能添加已备案的域名)

    • 域名:你的域名(将此域名添加到域名解析那里)

    • 加速地域:国内加速

    • 源站类型: 静态网站源站(非常重要!!)

    • 回源鉴权:不用打开(公共读不需要鉴权)

    • CDN 鉴权:不用设置

    • 点击保存即可

  3. 复制该项的CNAME,然后配置到域名解析那里。

  4. 等待部署,一般5分钟作用;部署成功后试下自己的域名能不能访问

配置HTTPS证书

先在域名服务商那里申请好免费https证书 (也可以在其他地方申请),这里以阿里云为例。

然后点击对应项的下载

选择其他

下载后的是一个压缩文件,解压后有两个文件 *.pem*.key,编辑器将其打开。

控制台这边选择 内容分发网络 -> 证书管理 -> 配置证书

  • 域名:选择刚才申请证书的域名
  • 证书来源:自有证书
  • 证书内容:将刚才以.pem结尾文件的内容粘进来
  • 私钥内容:将以.key结尾文件的内容粘进来
  • 回源协议:协议跟随
  • 最后提交即可!
  • 成功之后就可以使用https协议

剩下的防盗链、IP访问限频配置之类的各自慢慢摸索、不配置也行。

刷新CDN缓存

为什么要刷新CDN缓存?

因为一旦我们更新了博客的内容,而别人访问的却还是CDN节点缓存的内容,这体验就很糟糕

  1. 如果你想刷新某个页面

    内容分发网络 -> 刷新预热 -> URL刷新 -> 填入URL提交刷新即可

  2. 如果你想刷新整站内容

    目录刷新填入URL,选择刷新全部资源,提交刷新即可

总结

可能很多小伙伴还有点蒙,让我们来总结一下以后的使用流程:

  1. 先生成静态文件(hexo cl&hexo g)
  2. 再将生成的文件上传到对象存储,要利用腾讯的上传软件上传
  3. 刷新CDN缓存(因为CDN都是有缓存的,你不刷新,别人访问的都是旧资源)

但是这样总归还是有些麻烦,不过云服务商都提供了各种SDK,如果你足够牛逼,你可以手写一个一键上传脚本,并自动更新CDN缓存。如果你跟我一样是个菜鸡,那还是老老实实用服务商给的“轮子”吧。


文章作者: Sky03
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Sky03 !
评论
 上一篇
国内Github访问加速 国内Github访问加速
原理绕过国内DNS解析,直接访问GitHub的CDN节点,从而达到加速的目的。该方法也可加速其他因为CDN被屏蔽导致访问慢的网站。 大白话:其实就是不用默认DNS解析到的IP,而是直接指定一个IP去访问;比如:你去访问github.com,
2019-12-15 Sky03
下一篇 
关于百度无法爬取GitHub内容解决方案 关于百度无法爬取GitHub内容解决方案
关于百度无法爬取GitHub内容解决方案既然百度无法爬取GitHub,那么我们只需要找个可以被百度爬取到的代码托管平台即可(并且还提供pages服务),基本只有国内的平台了:Gitee和Coding!Gitee自定义域名要花钱(九十多,都可
2019-11-13
  目录