文章目录
什么是CDN
阿里云内容分发网络CDN(Content Delivery Network)是建立并覆盖在承载网之上,由遍布全球的边缘节点服务器群组成的分布式网络。阿里云CDN能分担源站压力,避免网络拥塞,确保在不同区域、不同场景下加速网站内容的分发,提高资源访问速度。
CDN优点:
- 全网带宽输出能力达150 Tbps。
- 把静态内容缓存到边缘节点提高访问下载效率。
- CDN流量价格(0.17元/GB)比OSS流量价格(0.4元/GB)便宜
- 降低带宽成本,隐藏源站地址提高安全性的同时提升下载速度、降低响应时间,提供流畅的用户体验
加速原理
假设您的加速域名为www.aliyundoc.com
,接入CDN开始加速服务后,当终端用户在北京发起HTTP请求时,处理流程如下图所示。
- 当终端用户向
www.aliyundoc.com
下的指定资源发起请求时,首先向Local DNS(本地DNS)发起请求域名www.aliyundoc.com
对应的IP。 - Local DNS检查缓存中是否有
www.aliyundoc.com
的IP地址记录。如果有,则直接返回给终端用户;如果没有,则向网站授权DNS请求域名www.aliyundoc.com
的解析记录。 - 当网站授权DNS解析
www.aliyundoc.com
后,返回域名的CNAMEwww.aliyundoc.com.example.com
。 - Local DNS向阿里云CDN的DNS调度系统请求域名
www.aliyundoc.com.example.com
的解析记录,阿里云CDN的DNS调度系统将为其分配最佳节点IP地址。 - Local DNS获取阿里云CDN的DNS调度系统返回的最佳节点IP地址。
- Local DNS将最佳节点IP地址返回给用户,用户获取到最佳节点IP地址。
- 用户向最佳节点IP地址发起对该资源的访问请求。
- 如果该最佳节点已缓存该资源,则会将请求的资源直接返回给用户(步骤8),此时请求结束。
- 如果该最佳节点未缓存该资源或者缓存的资源已经失效,则节点将会向源站发起对该资源的请求。获取源站资源后结合用户自定义配置的缓存策略,将资源缓存到CDN节点并返回给用户(步骤8),此时请求结束。配置缓存策略的操作方法,请参见配置缓存过期时间。
如何配置使用
第一步 配置OSS开启CND加速
第二步 配置CDN支持HTTPS
如果你滴网站不需要https那么这一步就不需要了,但是为了安全我们是建议使用滴哈。
当您开启HTTPS功能后,将产生静态HTTPS请求数计费数据。 价格( 0.05元/万次),可以购买对应资源包抵扣费用会更低。
一.在SSL证书
产品购买证书
如果需要购买证书,您可以在SSL证书控制台申请免费证书或购买高级证书。如果已经拥有HTTPS证书,则自有证书需满足证书格式要求。详细信息,请参见证书格式说明。
我们这里直接白嫖免费的哈。注意注意哈!!!免费ssl证书要手动续约。
选择免费试用证书,付款时是0元
填写域名等信息进行申请
验证DNS信息,提交审核,秒通过。
二.在cdn控制台配置HTTPS证书
HTTPS功能为增值服务,开启HTTPS将产生HTTPS请求数计费,该费用单独按量计费,不包含在CDN流量包内。HTTPS计费介绍,请参见增值服务计费。
-
登录CDN控制台。
-
在左侧导航栏,选择安全防护> 证书服务。
-
在证书服务页面,单击配置证书。
-
在配置证书面板,配置证书相关参数。
直接选择云盾SSL证书中心,即可直接使用上面申请的免费证书了。
参考:https://help.aliyun.com/document_detail/127422.html?spm=5176.208361.1107621.33.7c3c57e0T9RpML
第三步 替换代码中UrlPrefix
由
"https://" + ossSetting.getBucketName() + "." + ossSetting.getEndPoint() + "/" + key
更改为 cdnEndPoint
"https://oss.laker.com" + "/" + key
示例为
https://oss.laker.com/001922faf1774c14ab7e73a5c648ef25-2021.png
第四步 购买相关资源包(建议、可选)
不购买资源包的话,会稍微有点儿贵哈,下面的是实时付费的价格,真实情况购买资源包价格会低些。
-
OSS标准(LRS)存储包:0.12元/GB/月
-
OSS回源流量包:0.15元/GB
-
CDN下行流量包:0.24元/GB
-
CDN静态HTTPS请求数:0.05元/万次
验证是否加速成功
响应的资源Header头部就会包含X-Swift-SaveTime、X-Swift-CacheTime、Age这三个字段信息,很多同学不清楚它们都代表什么意思
X-Swift-SaveTime
X-Swift-SaveTime 代表开始在cdn上缓存的时间,如果字段值是2018-07-11 14:33:49,由于时间是GMT时间,折算成北京时间加8小时,也就是代表该资源在2018-07-11 22:33:49开始在CDN缓存。
X-Swift-CacheTime
X-Swift-CacheTime 是cdn默认缓存时间,以秒为单位,过了这个时间该缓存就失效了。比如86400意思是缓存24小时,超过了这个时间,该缓存就丢弃了,需要重新回源获取。
Age
Age 代表在cdn上已经缓存的时间,以秒为单位。如果值是200,那么就代表该资源已经在cdn缓存了200s,您可以结合X-Swift-SaveTime的值和自己的电脑时间比对下。
阿里CDN, 走Tengine, 返回的响应很友好,甚至告诉你是从内存命中的。
- X-Cache:HIT TCP_MEM_HIT 表示命中缓存
- X-Cache:MISS TCP_MISS 则表示未命中缓存