作者:IT王小二

博客:https://itwxe.com

不知不觉三个月没更新了,这三个月诸事繁忙啊!最近没那么忙了,开始恢复更新。

一、CDN简介

CDN(Content Delivery Network)是指内容分发网络,也称为内容传送网络,这个概念始于1996年,是美国麻省理工学院的一个研究小组为改善互联网的服务质量而提出的。为了能在传统IP网上发布丰富的宽带媒体内容,他们提出在现有互联网基础上建立一个内容分发平台专门为网站提供服务,并于1999年成立了专门的CDN服务公司,为Yahoo提供专业服务。由于CDN是为加快网络访问速度而被优化的网络覆盖层,因此被形象地称为“网络加速器”。

CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。

CDN的基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。 --摘自百度百科

二、通俗易懂理解CDN

看了上面的话不知道 CDN 用来干啥的?不要紧,这不是有小二在吗。小二这就给小伙伴们娓娓道来。

先不说 CDN,相信小伙伴们都在京东自营店买过东西吧,要是没有的话扣 1 哈。

相信用过京东自营的小伙伴都知道,购买的商品基本隔天就到我们手中,这是为啥呢?

细心的小伙伴都可以看到发货地址都离自己很近,京东将商品存储在全国的八个大仓库里面,当我们从就京东自营店购买一个商品,那么京东会从离你最近的仓库发货,就近发货减少了道路的拥堵和长距离运输,基本隔天就能收到商品,速度非常的快,再也不用漫长的等待。

那么我们访问一个网站时,如果站点服务器是在广州,而访问的用户在北京,那么不同时间段的运营商网络状态和经过长距离的网络传输,访问速度会变慢,那么访问网站时有没有办法类似京东买商品可以快速到货呢,当然有,解决办法之一就是 CDN。

所以说人话, CDN 就是一个你的网站缓存, 而 CDN 节点就类似京东在全国的八大仓库,提前把网站内容存到了 CDN 节点,然后每个请求网站的用户从就近节点获取网站数据,大大减短了网络的长距离传输和网络拥堵的状况下的访问速度,类似下图的效果。

同时不同 CDN 服务商还会针对电信、移动、联通等网络专门设置 CDN 节点,减少网络服务商之间的切换。

三、CDN的好处

  • 隐藏服务器源ip。
  • 连接所响应速度最快的节点提高访问速度。
  • CDN节点缓存减少网站服务器访问压力。

四、CDN原理解析

因为小二是程序猿嘛,所以肯定要扯一扯 CDN 原理的。以我的域名 itwxe.com 为例看看一个请求走的解析路线,目前我的解析服务商是 DNSPod,CDN 使用的是百度云加速。

不使用 CDN 时

  1. 用户输入访问的域名 itwxe.com,操作系统向 LocalDNS 查询域名的 IP 地址。
  2. LocalDNS 向 RootDNS 查询域名的授权服务器 (这里假设 LocalDNS 缓存过期)。
  3. RootDNS 将域名授权 DNS 记录返回给 LocalDNS,我的是 DNSPod。
  4. LocalDNS 得到域名的授权 DNS 记录后,继续向域名授权 DNS (DNSPod)查询域名的 IP 地址。
  5. 域名授权 DNS (DNSPod)查询域名记录后,返回给 LocalDNS。
  6. LocalDNS 将得到的域名映射的 IP 地址,返回给用户端。
  7. 用户端得到域名 IP 地址后,访问站点服务器。
  8. 站点服务器接收请求,将内容返回给客户端。

使用 CDN 时

  1. 用户输入访问的域名 itwxe.com,操作系统向 LocalDNS 查询域名的 IP 地址。
  2. LocalDNS 向 RootDNS 查询域名的授权服务器 (这里假设 LocalDNS 缓存过期)。
  3. RootDNS 将域名授权 DNS 记录返回给 LocalDNS,我的是 DNSPod。
  4. LocalDNS 得到域名的授权 DNS 记录后,继续向域名授权 DNS (DNSPod)查询域名的 IP 地址。
  5. 域名授权 DNS (DNSPod)查询域名记录后(一般是CNAME,例如我的是itwxe.com.cname.yunjiasu-cdn.net.),返回给 LocalDNS。
  6. LocalDNS 得到域名记录后,向智能调度 DNS 查询域名的 IP 地址。
  7. 智能调度 DNS 根据一定的算法和策略,将最适合的 CDN 节点 IP 地址返回给 LocalDNS。
  8. LocalDNS 将得到的域名 IP 地址,返回给用户端。
  9. 用户得到域名 IP 地址后,访问站点服务器。
  10. 站点服务器接收请求,将内容返回给客户端。

使用 dig 命令可以看到请求的 cname 地址和 最终访问的 CDN 节点 IP,如下图访问我的博客访问的节点。

五、免费CDN服务商

有人说过:“免费的往往是最贵的”,所以...

下面列举的免费 CDN 使用时一定要注意免费版官方的使用说明,没有设置好 CDN 的情况下如果被 DDos 了可能一夜之间倾家荡产。

下面列举的免费 CDN 使用时一定要注意免费版官方的使用说明,没有设置好 CDN 的情况下如果被 DDos 了可能一夜之间倾家荡产。

下面列举的免费 CDN 使用时一定要注意免费版官方的使用说明,没有设置好 CDN 的情况下如果被 DDos 了可能一夜之间倾家荡产。

重要的事情说三遍,下面小二开始正式说说目前免费 CDN 有哪些比较好用的。

国外

  • Cloudflare

官方网站:https://www.cloudflare.com/zh-cn/

国外最好用的 CDN,没有之一,如果你的服务器在国外且域名没有备案,那么需要使用 CDN 的市况下 Cloudflare 可以说是最好的选择了,免费套餐即不限流量,还能抗 DDos 攻击。当然如果你的服务器在国内且域名已经备案了,那么就使用国内的 CDN 吧,就不是加速 CDN,而是减速 CDN 了。

优点:免费套餐即不限流量,可以抗 DDos 攻击。

缺点:在国内访问速度不佳。

国内

如果需要使用国内的 CDN 服务商服务,那么前提就是域名需要备案了,备案了才能使用国内的 CDN,下面介绍几个常见的。

  • 百度云加速

官方网站:https://su.baidu.com/

小二第一个使用的,也是目前正在使用的 CDN 服务商,几个月前还是 CDN 节点数量 6-9 个,流量10g/天,单个上传文件大小 100M,现在没想到都缩水这么多了,不过目前使用速度还可以,免费又大碗。

顺便说一下百度云 CDN,百度云 CDN 和百度云加速不是同一个产品,百度云 CDN 号称可以24小时极速收录,但是我试用了两个月的免费套餐之后还是切换回了百度云加速。原因是24小时极速收录效果不佳,我问了客服,客服说也只是把访问数据提交给收录部门进行处理。

优点:免费套餐缩水后流量5G/天,速度还不错。

缺点:随着免费套餐缩水,CDN节点数量减少,很多功能需要付费使用,同时个人认证需要手持身份证拍照(略麻烦)。

  • 奇安信CDN

官方网站:https://wangzhan.qianxin.com/

这个是最近百度云加速免费版套餐缩水和加了很多限制后小二朋友推荐给我的,小二后面会考虑 CDN 从百度云加速切换到奇安信 CDN。因为目前奇安信 CDN 免费不限量,朋友博客测试访问速度还可以,妈妈再也不用担心我会因为 DDos 攻击倾家荡产了。

优点:免费不限量,安全,不用担心 DDos。

缺点:节点少,同时个人认证也需要手持身份证认证(不过朋友说上传个奥特曼都行,只要你网站备案了,个人认证没人审核的)。

  • 又拍云

官方网站:https://www.upyun.com/

也是很多博主正在使用的 CDN,申请加入又拍云联盟后将又拍云链接附在网站底部,每个月就可以获得 15GB 的 CDN 流量和 10GB 的存储空间(即对象存储),对象存储自动走 CDN 流量,无需其他配置。

优点:速度快,节点多,有在线客服。

缺点:流量少,又拍云节点经常被打,每年得申请一次又拍云联盟。

其他比较常见的还有 上海云盾、多吉云、七牛云就不一一介绍了。

六、CDN的使用

每个服务商 CDN 的配置界面都不大一样,不好写怎么配置,所以我大致说下 CDN 配置的思路。

1、首先保证域名A记录解析源站IP可以正常访问。

2、接入CDN主要有两种方式,第一种是 NS 解析,第二种是 CNAME 解析,大部分情况使用 CNAME 解析就行了。

3、选择 CNAME 解析后在选择的 CDN 服务商处添加网站,然后添加解析记录,添加解析记录之后会生成一个 CNAME 域名值。

4、复制这个 CNAME 域名值,进入你的域名解析服务商界面处,将解析记录解析成 CDN 生成的 CNAME 域名值。

配置成功之后就可以愉快的使用 CDN 了,当然这只是最基本的配置,还有很多需要注意的地方,例如缓存策略,缓存时间,免费套餐的访问带宽阈值,免费流量使用完之后的策略...都是需要注意的地方。

因为百度云加速小二已经配置好了,不想还原设置重新设置,所以下面我就按上面的步骤以奇安信 CDN 为例说下怎么配置 CDN。

1、首先保证域名解析源站能访问这就不用说了吧。

2、奇安信 CDN 官网注册账号实名认证后,在域名列表页面,输入你的域名,选择 CNAME 解析,点击添加域名。

3、添加域名后点击添加子域名,添加记录,小二选择的是回源到 IP,所以添加两条A记录,如果是回源到域名,由别的域名提供IP,则添加 CNAME 记录。小二添加了 itwxe.com 和 www.itwxe.com 两条记录,配置结果如下图,最终会生成两条记录,这就是我们在域名解析处需要用到的两条记录。

4、在解析出得到两条解析记录后,进入域名解析配置界面,小二的域名是在腾讯云购买的,解析服务商是 DNSPod,复制步骤三的两条记录添加到 DNSPod 中,同时需要注意的是需要一一对应,这样就就完成了最简单的 CDN 配置了。小二的示例如下图。

等待 DNSPod 解析更改生效,腾讯云免费版DNS解析套餐更改记录生效时间是 10 分钟,此时可以再次使用 dig 命令,可以看到奇安信 CDN 已经生效了,不再是百度云加速。

...

等了10分钟,我也以为要成功了,毕竟小二可是老司机了,结果一访问网站,发现访问不了了!

以小二多年跳坑的经验,九成是CDN节点和源站SSL证书之间证书的问题,待我上传个 SSL 证书啥问题都解决了,当我以为故事到这里就结束了,结果...

不支持泛域名的话还是老老实实百度云加速吧,一个一个配置子域名可太累了...

当然配置 CDN 主要的流程就是上面的4个步骤,配置过程中有问题的客官欢迎留言评论。

都读到这里了,来个 点赞、评论、关注、收藏 吧!

一文明白CDN加速是个啥的更多相关文章

  1. 七牛云 融合CDN测试域名 -> 融合CDN加速域名

    七牛云 融合CDN测试域名 -> 融合CDN加速域名 本篇主要讲解 如何将七牛云融合CDN测试域名 切换到自定义的加速域名上去,为什么会写这篇是因为我收到了一封 [七牛云]测试域名回收通知的邮件 ...

  2. 【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践

    提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OS ...

  3. CDN加速静态文件服务器的访问

    1.用于加速用户下载资源的速度. 简单来说,CDN相当于一个中间代理,原来我们需要请求某个网址比如www.baidu.com,请求会直接发送至百度的服务器上,假如请求者在新疆,但百度的服务器在北京,这 ...

  4. 老司机的自信,让 CDN 加速再加速

    CDN 的存在,加快了用户的访问速度,使用户可以在不提升网速下,获得更好的访问体验.购物时,可以更快的显示商品图片:看电影时,可以随意的拖拽浏览.如果把数据资源比作是一件件包裹,那么用户的带宽就像是一 ...

  5. 10分钟教你使用Picgo+GitHub+ jsDelivr搭建CDN加速免费图床

    前言 经常写Markdown或者博客的同学,肯定都要用到图床.图床是什么呢?其实相当于一个存储图片的网站,类似百度云这样,不过上传图片到图床后可以直接通过外链进行访问. 比如把本地一张a.jpg上传到 ...

  6. 阿里云系列——6.给你的域名使用CDN加速(详细步骤+简单配置)

    网站部署之~阿里云系列汇总 http://www.cnblogs.com/dunitian/p/4958462.html 进入管理页面:https://home.console.aliyun.com/ ...

  7. Signalr系列之虚拟目录详解与应用中的CDN加速实战

    目录 对SignalR不了解的人可以直接移步下面的目录 SignalR系列目录 前言 前段时间一直有人问我 在用SignalR 2.0开发客服系统[系列1:实现群发通讯]这篇文章中的"/Si ...

  8. 利用免费cdn加速webpack单页应用

    回顾现状 在之前的学习过程中,react单页应用经过webpack打包之后会输出大概如下的目录结构,它就是站点的所有前端组成了:   1 2 3 4 5 6 MacBook-Pro:output ba ...

  9. c#获取ip的方法cdn加速获取真实ip方法

    服务端://方法一HttpContext.Current.Request.UserHostAddress; //方法二HttpContext.Current.Request.ServerVariabl ...

随机推荐

  1. 基于nginx实现私有yum仓库

    基于本地光盘的源 server端IP:10.0.0.79 nginx使用默认路径.端口 yum install nginx -y #更改以root运行 sed -i '/^user/s/nginx/r ...

  2. 数据库已经存在表, django使用inspectdb反向生成model实体类

    1.通过inspectdb处理类,可以将现有数据库里的一个或者多个.全部数据库表生成Django model实体类 python manage.py inspectdb --database defa ...

  3. Go语言核心36讲(Go语言进阶技术二)--学习笔记

    08 | container包中的那些容器 我们在上次讨论了数组和切片,当我们提到数组的时候,往往会想起链表.那么 Go 语言的链表是什么样的呢? Go 语言的链表实现在标准库的container/l ...

  4. UI自动化测试之Airtest

    官方文档: https://airtest.doc.io.netease.com/ 本文我们讲解下Airtest的使用,主要学习目标有以下几点: (1)认识Airtest (2)了解Airtest能做 ...

  5. 软件案例分析——VS、VS Code

    软件案例分析--VS和VS Code 第一部分 调研,测评 一.使用10–30分钟这个软件的基本功能(请上传使用软件的照片) VS code Visual Studio 二.主要功能和目标用户有何不同 ...

  6. BUAA2020软工作业(三)——个人项目

    项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人项目作业 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方面帮助 ...

  7. [ NOIP2013 D2-T3 ] 华容道

    NOIP2013 华容道 图论好题. 介于网上全是些令蒟蒻头昏的题解和排版一塌糊涂以及过于详细的题解...蒟蒻记录一下.. 显然需要将白格移动到 \(s\) 相邻格,然后交换 \(s\) 与白格,再将 ...

  8. 联赛膜你测试20 T1 Simple 题解 && NOIP2017 小凯的疑惑 题解(赛瓦维斯特定理)

    前言: 数学题,对于我这种菜B还是需要多磨啊 Simple 首先它问不是好数的数量,可以转化为用总数量减去是好数的数量. 求"好数"的数量: 由裴蜀定理得,如果某个数\(i\)不能 ...

  9. distinct-subsequences leetcode C++

    Given a string S and a string T, count the number of distinct subsequences of T in S. A subsequence ...

  10. 前端面试手写代码——call、apply、bind

    1 call.apply.bind 用法及对比 1.1 Function.prototype 三者都是Function原型上的方法,所有函数都能调用它们 Function.prototype.call ...