CDN加速

自从有了第一次博客优化经验,我就越发对优化感兴趣了嘿嘿(✧∇✧)。

看着博客首页打开时长为1200ms左右,我又开始琢磨有什么办法能再给网站提提速,让访问时间降低到1000ms以下,这时候我想起前不久群里讨论过这个问题,我翻回去看见他们提到了CDN加速

CDN加速?好耳熟(ㅇㅅㅇ❀)...我之前也听过,不过概念还停留在就近获取网络资源上,今天就让我们一起学习一下什么是CDN,如何配置CDN加速。

CDN介绍

CDN是content delivery network或者是content distribution network的缩写,即内容分发网络。

CDN介绍起来很简单,原来也不复杂,说白了就是利用物理上的多台服务器,将用户需要的音乐、图片、视频、应用程序等资源分布式存储在全球各地,这样用户便可以高效、稳定的就近获取需要资源。

但是为什么需要CDN呢?

原因有两点:

其一互联网快速发展和网民的急速增多,导致原本宽裕的网络通道变得拥挤,一万个人同时使用一条网络通道和一亿人同时使用一条网络通道的体验显然是完全不一样的。

其二就是距离,试想一下如果我们要从美国那边请求一个资源,美国与中国之间的直线距离是11,160公里,而光速大概为30万公里/s,由此可以推算出一个请求和响应加起来需要74.4ms,看起来很少是不是,但这是最最理想的情况。需要从美国直接拉一条一万公里的光缆直通中国才能达到,想想就不现实,更何况还有网络拥堵、光缆速度达不到光速等诸多因素。

所以CDN出现了,用户不需要跨越上万公里去获取资源,只需要获取缓存在就近服务器上的资源就可以了,这样不仅避免了多人共用一条线路,也解决了超长距离的问题。

了解完CDN,我已经迫不及待开始实践了!

多吉云CDN加速

为什么选择多吉云的CDN加速呢?

好问题

因为当我准备去跟群里大佬一样白嫖百度CDN加速的时候。发现...从2023/05/05开始百度不再免费接入域名了(ノДT)。

于是我去网上找了一下,发现还有几个云服务商还提供每月免费额度的流量的CDN服务,本来我准备选择七牛云,毕竟在云服务这块还是蛮有名的,然鹅不支持https,只支持http,多方比对之下最后选择了多吉云。

多吉云注册后,每个月会有20G的免费流量,超过后就要收费了,并且支持https。

操作步骤

首先需要注册多吉云,然后进行实名认证,之后就可以绑定我们的域名进行CDN加速了。

一、绑定域名

首先我们需要对加速域名进行绑定:



加速域名就填写需要加速的域名,业务类型按照下面介绍选择,博客一类的网站选择网页小文件就可以,在源站IP中填入自己的服务器地址,协议根据自己网站选择,最后确认绑定。

二、验证域名所有权

输入域名和服务器IP确认绑定后,需要到服务器进行DNS验证域名所有权,我是阿里云服务器,所以去阿里云的域名解析里面添加规则:

三、加速域名测试

验证成功后等待部署创建加速域名:



等待五分钟左右刷新页面,就可以看到CDN加速域名CNAME了,接下来就可以去阿里云修改DNS记录进行域名转发了。

但如果你的网站是已上线网站,为了保证现有业务稳定运行,建议先在本地通过 Hosts 文件绑定 CDN 节点 IP 进行访问测试。

本地测试

  1. 加速域名添加成功后,融合 CDN 控制台的域名管理页中的域名列表的 CNAME 列会给出域名的 CNAME 值,例如www.lemondu.top.s2-web.dogedns.com。
  2. 复制该 CNAME 值,打开你电脑上的终端(Windows 系统为 CMD),输入并运行指令:
ping www.lemondu.top.s2-web.dogedns.com



命令行中显示的 IP,即为 CDN 节点 IP。

  1. 将上一步获取到的节点 IP(61.170.72.248),通过修改本地 Hosts 文件,绑定到加速域名(www.lemondu.top)。 Hosts 文件:

  2. 保存后,在本地通过浏览器访问加速域名进行测试,如果符合预期,说明配置正确。

配置 CNAME

本地测试成功后,就可以正式将CNAME配置到域名解析中了,依旧是在域名解析中添加记录,记录类型选择CNAME,并且如果有同名的 A 类型(或 AAAA 类型)记录,添加时可能会提示冲突,你需要先删除对应的 A 记录或者将其暂停。

添加记录完成后,最后还需进行测试。要验证 CNAME 是否配置成功,可以使用命令行工具测试:

nslookup -qt=cname 加速域名

若是成功,则会返回如下图所示结果:



如果程序显示的 canonical name 和多吉云控制台提供的 CNAME 值一致,则表示你的加速域名已经成功配置 CNAME,加速生效了。

效果

最后我们测试一下加速后的效果:



入站速度成功降低到了1000ms以下,效果达成!

防患于未然

别走,还有最后一步!这步很重要,那就是给CDN进行限流,现在大部分的CDN提供商都是实行超过流量自动欠费的机制,虽然个人网站一般不会有那么大的流浪,但如果哪天你的网站一不小心被恶意攻击者临幸了,那极有可能造成较大的财产损失。

所以我们需要进行流量限制,一般服务商都会提供这个功能,但不会主动提醒你开启(很贼),免费流量为20G,我将流量限制在了月19G,当这个月使用流量超过19G的时候就会停用域名,那时候访问就会变成404了,另外还有一些一些小时间段的限流,按分钟或天计算,还有单个链接的限流等等,可以根据实际情况进行开启。

缓存策略

接入CDN之后,我发现每次加载的内容都是一样的,就算发布了新文章也还是会加载到刚接入CDN时的样子,CDN的本质是就近缓存。

是不是我缓存策略没设置好?

进入多吉云控制台一看,果然,默认设置的是缓存全部资源:



我们需要关闭原来的全部缓存,换为静态资源缓存,第三条就是自己添加的静态资源缓存。

重新部署生效后,问题解决!

优化博客Ⅱ-CDN加速的更多相关文章

  1. OO第二单元优化博客

    OO第二单元优化博客 第五次作业没有性能分,但是,我在这一单元的宗旨就是写一个日常生活中 最常见的那种电梯,所以第五次我没有写傻瓜电梯,而是直接写了个\(look\),和第六次基本相同. 总计一下lo ...

  2. OO第一单元优化博客

    OO第一单元优化博客 第一次作业: 合并同类项+提正系数项+优化系数指数0/1=满分 第二次作业: 初始想法 一开始是想以\(sin(x)​\)和\(cos(x)​\)的指数作为坐标,在图上画出来就可 ...

  3. hexo next主题深度优化(七),cdn加速。

    文章目录 注: 正题: 免费cdn 收费cdn 个人博客:https://mmmmmm.me 源码:https://github.com/dataiyangu/dataiyangu.github.io ...

  4. 第 15 篇:优化博客功能的细节,提升使用体验—— HelloDjango 系列教程

    作者:HelloGitHub-追梦人物 文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 在之前的系列教程中,我们已经实现了:文章的发布.展示.评论等功能,可能认真的小伙伴已经 ...

  5. SqlServer优化博客网址

    CareySon Sql Server MVP : http://www.cnblogs.com/CareySon/

  6. VuePress 博客优化之开启 Algolia 全文搜索

    前言 在 <一篇带你用 VuePress + Github Pages 搭建博客>中,我们使用 VuePress 搭建了一个博客,最终的效果查看:TypeScript 中文文档. 由于 V ...

  7. VuePress 博客之 SEO 优化(三)标题、链接优化

    前言 在 <一篇带你用 VuePress + Github Pages 搭建博客>中,我们使用 VuePress 搭建了一个博客,最终的效果查看:TypeScript 中文文档. 本篇讲讲 ...

  8. VuePress 博客之 SEO 优化(二)重定向

    前言 在 <一篇带你用 VuePress + Github Pages 搭建博客>中,我们使用 VuePress 搭建了一个博客,最终的效果查看:TypeScript 中文文档. 本篇讲讲 ...

  9. VuePress 博客之 SEO 优化(一) sitemap 与搜索引擎收录

    前言 在 <一篇带你用 VuePress + Github Pages 搭建博客>中,我们使用 VuePress 搭建了一个博客,最终的效果查看:TypeScript 中文文档. 本篇讲讲 ...

  10. VuePress 博客优化之增加 Vssue 评论功能

    前言 在 <一篇带你用 VuePress + Github Pages 搭建博客>中,我们使用 VuePress 搭建了一个博客,最终的效果查看:TypeScript 中文文档. 本篇讲讲 ...

随机推荐

  1. vi指令总结

    VI常用技巧 ​ VI命令可以说是Unix/Linux世界里最常用的编辑文件的命令了,但是因为它的命令集众多,很多人都不习惯使用它,其实您只需要掌握基本命令,然后加以灵活运用,就会发现它的优势,并会逐 ...

  2. react hooks + ts 封装组件

    react hooks+ts组件封装 简介 在react使用ts封装组件,需要注意类型, 使用 forwardRef 方法包起来 子组件 import * as React from "re ...

  3. spring生态体系

    spring boot使用默认开发配置来实现快速开发spring xd用来简化大数据应用开发spring cloud为分布式系统开发提供工具集spring data对主流的关系型和nosql数据库的支 ...

  4. 2.6 使用dd命令安装Linux系统

    面对大批量服务器的安装,人们往往热衷于选择"无人值守安装"的方式,而此方式需要对服务器进行过多的配置,并不适合初学者. 无人值守安装(Kickstart),又称全自动安装,其工作原 ...

  5. PWN(栈溢出漏洞)-原创小白超详细[Jarvis-level0]

    ​ 题目来源:Jarvis OJ https://www.jarvisoj.com/challenges 题目名称:Level0 题目介绍: 属于栈溢出中的ret2text 意思是Return to ...

  6. Python文件读取和写入方法

    读取 # 通过单字符串空格分隔 def count_words(filepath): with open(filepath, 'r') as file: string = file.read() st ...

  7. Eclipse 调试窗口无法显示,以及断点设置无效问题的解决方法

    问题描述一:在下载了2020.3的Eclipse之后,调试程序,无法弹出调试窗口及变量信息. 解决方案:菜单栏:windows--show view--Other--找到Debug文件夹,可以挑选自己 ...

  8. 基于Java+SpringBoot+Mysql实现的快递柜寄取快递系统功能实现五

    一.前言介绍: 1.1 项目摘要 随着电子商务的迅猛发展和城市化进程的加快,快递业务量呈现出爆炸式增长的趋势.传统的快递寄取方式,如人工配送和定点领取,已经无法满足现代社会的快速.便捷需求.这些问题不 ...

  9. RK3568,字符设备框架:管理同主设备号、不同次设备号设备

    字符设备框架:管理同主设备号.不同次设备号设备 以下代码针对迅为开发板RK3568,开发板系统是ubuntu20.04, 正文 以下是我写的字符设备框架,实现了管理同主设备号.不同次设备号的功能. 代 ...

  10. 干货分享:Air780E怎么连接华为云?

    ​ 众所周知,市面上有很多云平台,阿里云.腾讯云.中移OneNET.华为云.百度云.涂鸦云.TLink云等等......并且每家云平台都有自己的协议,工程师要移植不同的SDK代码或基于各家的手册文档对 ...