优化博客Ⅱ-CDN加速
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 进行访问测试。
本地测试
- 加速域名添加成功后,融合 CDN 控制台的域名管理页中的域名列表的 CNAME 列会给出域名的 CNAME 值,例如www.lemondu.top.s2-web.dogedns.com。
- 复制该 CNAME 值,打开你电脑上的终端(Windows 系统为 CMD),输入并运行指令:
ping www.lemondu.top.s2-web.dogedns.com
命令行中显示的 IP,即为 CDN 节点 IP。
- 将上一步获取到的节点 IP(61.170.72.248),通过修改本地 Hosts 文件,绑定到加速域名(www.lemondu.top)。 Hosts 文件:
- 保存后,在本地通过浏览器访问加速域名进行测试,如果符合预期,说明配置正确。
配置 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加速的更多相关文章
- OO第二单元优化博客
OO第二单元优化博客 第五次作业没有性能分,但是,我在这一单元的宗旨就是写一个日常生活中 最常见的那种电梯,所以第五次我没有写傻瓜电梯,而是直接写了个\(look\),和第六次基本相同. 总计一下lo ...
- OO第一单元优化博客
OO第一单元优化博客 第一次作业: 合并同类项+提正系数项+优化系数指数0/1=满分 第二次作业: 初始想法 一开始是想以\(sin(x)\)和\(cos(x)\)的指数作为坐标,在图上画出来就可 ...
- hexo next主题深度优化(七),cdn加速。
文章目录 注: 正题: 免费cdn 收费cdn 个人博客:https://mmmmmm.me 源码:https://github.com/dataiyangu/dataiyangu.github.io ...
- 第 15 篇:优化博客功能的细节,提升使用体验—— HelloDjango 系列教程
作者:HelloGitHub-追梦人物 文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 在之前的系列教程中,我们已经实现了:文章的发布.展示.评论等功能,可能认真的小伙伴已经 ...
- SqlServer优化博客网址
CareySon Sql Server MVP : http://www.cnblogs.com/CareySon/
- VuePress 博客优化之开启 Algolia 全文搜索
前言 在 <一篇带你用 VuePress + Github Pages 搭建博客>中,我们使用 VuePress 搭建了一个博客,最终的效果查看:TypeScript 中文文档. 由于 V ...
- VuePress 博客之 SEO 优化(三)标题、链接优化
前言 在 <一篇带你用 VuePress + Github Pages 搭建博客>中,我们使用 VuePress 搭建了一个博客,最终的效果查看:TypeScript 中文文档. 本篇讲讲 ...
- VuePress 博客之 SEO 优化(二)重定向
前言 在 <一篇带你用 VuePress + Github Pages 搭建博客>中,我们使用 VuePress 搭建了一个博客,最终的效果查看:TypeScript 中文文档. 本篇讲讲 ...
- VuePress 博客之 SEO 优化(一) sitemap 与搜索引擎收录
前言 在 <一篇带你用 VuePress + Github Pages 搭建博客>中,我们使用 VuePress 搭建了一个博客,最终的效果查看:TypeScript 中文文档. 本篇讲讲 ...
- VuePress 博客优化之增加 Vssue 评论功能
前言 在 <一篇带你用 VuePress + Github Pages 搭建博客>中,我们使用 VuePress 搭建了一个博客,最终的效果查看:TypeScript 中文文档. 本篇讲讲 ...
随机推荐
- CTime类缺陷
如果构造CTime的时间不在下面这个范围内,会抛出异常
- 批处理-- 查询进程,杀进程,启动pythond程序,任务计划程序
@echo off wmic process where caption="python.exe" get processid,commandline | findstr &quo ...
- spring生态体系
spring boot使用默认开发配置来实现快速开发spring xd用来简化大数据应用开发spring cloud为分布式系统开发提供工具集spring data对主流的关系型和nosql数据库的支 ...
- ServiceMesh 4:实现流量染色和分级发布
★ ServiceMesh系列 1 什么是流量染色 在复杂的生产场景中,经常会有同一个服务中,存在多个版本长期共存的需求.为了让不同的用户在不一样的版本中使用,就需要对用户的请求进行采样和染色,打上不 ...
- P5524 Ynoi2012 NOIP2015 充满了希望
P5524 Ynoi2012 NOIP2015 充满了希望 数组开大见祖宗. 思路 不难发现只有询问才会产生贡献,而询问的值来自于距离它最近的且能覆盖这个询问的点的覆盖操作. 可以每个询问操作保存一个 ...
- AI那么厉害,那测试开发和自动化测试这些职位是不是就多余了?
在当今科技飞速发展的时代,AI大模型如ChatGPT等如同璀璨星辰般闪耀登场,它们的强大功能引发了各个领域的诸多思考.在软件测试领域,不少人心里直犯嘀咕:这AI大模型都这么厉害了,那测试开发和自动化测 ...
- 曾经做的一个JS小游戏——《Battle City》
今天改网盘密码时,找到了个很久前的东西:JavaScript版的坦克大战.07年的夏天制作花了好多个夜晚制作,那段着迷JS游戏的疯狂时光.但因为后来众多浏览器的出现,导致了游戏兼容性大大的下降,最终放 ...
- 二、FreeRTOS学习笔记-移植
FreeRTOS移植 首先准备一个基础工程,stm32标准库或者HAL库,本实验使用HAL库版本的内存管理实验进行移植 移植步骤: 1 第一步:添加FreeRTOS源码(添加FreeRTOS源码的目的 ...
- Blazor 组件库 BootstrapBlazor 中Tag组件介绍
Tag组件的样子 Tag组件的介绍 Tag组件是一个非常简单的组件. <Tag Icon="fa fa-fw fa-check-circle" Color="Col ...
- 如何用Docker Compose部署项目?
目录 前言 Docker Compose 1. Docker Compose是什么? 2. Docker Compose 的具体步骤 3. 如何在IDEA项目里面使用Docker Compose 启动 ...