引入CDN

what

CDN(Content Delivery Network,内容分发网络)是通过将源站内容分发至靠近用户的加速节点,使用户可以就近获得所需的内容,解决Internet网络拥挤的状况,提高用户访问的响应速度和成功率,从而提升您业务的使用体验。
您可以在CDN管理控制台添加加速域名,然后前往域名服务商处配置CNAME解析,即可启用CDN加速。还可以根据业务需要,为加速域名进行缓存、安全、性能优化配置,优化加速效果、缓解源站压力。

能力

  • 静态加速
  • 卸载源站,减少源站的压力
  • 防攻击能力,CDN是天然的大型分布式系统,有效将攻击由中心化分散到CDN边缘
  • 定制化模块开发能力,如图片压缩、格式转化、自适应图片下载等功能

网络拓扑变化

原始链路 DNS->WAF 改造成 DNS->CDN->WAF
CDN需要配置回源地址

HTTP请求流程说明:

1.用户在浏览器输入要访问的网站域名www.example.com,向本地DNS发起域名解析请求。
2.本地DNS检查缓存中是否有www.example.com的IP地址记录。如果有,则直接返回给终端用户;如果没有,则向网站授权DNS查询。
3.网站DNS服务器解析发现域名已经解析到了CNAME:www.example.com.c.cdnhwc1.com。
4.请求被指向CDN服务。
5.CDN对域名进行智能解析,将响应速度最快的CDN节点IP地址返回给本地DNS。
6.用户获取响应速度最快的CDN节点IP地址。
7.浏览器在得到最佳节点的IP地址以后,向CDN节点发出访问请求。

  • 如果该IP地址对应的节点已缓存该资源,节点将数据直接返回给用户,如图中步骤7和8,请求结束。
  • 如果该IP地址对应的节点未缓存该资源,节点回源请求资源。获取资源后,结合用户自定义配置的缓存策略,将资源缓存至节点,如图中的北京节点,并返回给用户,请求结束。
    -在这里插入图片描述

原理

CDN加速的原理就是将源站资源缓存到遍布全球的各个边缘节点,终端用户就近获取资源,从而达到加速效果。
加速资源
静态资源、动态资源(api接口)
在这里插入图片描述

缺点

  • 缓存未按计划过期,用户获取的是过期资源,此处就涉及缓存过期策略设置
  • 网络链路增加复杂度,增加运维难度
  • 盗刷流量,钱包顶不住

缓存过期

您可以通过修改资源的缓存规则,控制资源在CDN节点的缓存时间,提高缓存命中率、减轻源站压力。
检查源站资源cache-control配置,如果设置为不缓存(no-cache、private、no-store),同时在CDN侧开启了“缓存遵循源站”功能,则CDN节点无法缓存,用户每次访问这个资源都需要回源,无法达到加速的目的。

计费

流量计费
按照每小时实际使用的流量进行计费,

  • 流量计费适用于域名流量曲线波动较大,全天内带宽利用率小于30%,且有带宽尖峰的用户。
    峰值宽带计费
    获取排序第95%的 峰值带宽速率 作为计费标准,适用于有峰值的网站
  • 峰值带宽计费适用于域名流量曲线比较平稳,全天内带宽利用率大于30%的用户。
    性能指标

CDN效果验证

针对CDN本身

ping全局调度域名,使用第三方专业性能监控公司提供更多instant test 从不用区域ping获取边缘服务器的ip地址

上线

时延、回源率,丢包率、缓存命中率

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在uniapp中引入CDN,可以按照以下步骤进行: 1. 打开uniapp项目的根目录下的 `vue.config.js` 文件。 2. 在文件中添加以下代码: ```javascript module.exports = { configureWebpack: { externals: { 'vue': 'Vue', 'vuex': 'Vuex', 'vue-router': 'VueRouter' } }, chainWebpack: config => { config.plugin('html').tap(args => { args[0].cdn = { css: [ // 在这里添加需要引入CDN链接 ], js: [ // 在这里添加需要引入CDN链接 ] } return args }) } } ``` 上述代码中,我们通过 `configureWebpack` 和 `chainWebpack` 来配置webpack。其中,`externals` 是用来配置外部依赖,我们将 `vue`、`vuex`、`vue-router` 这三个常用的依赖设置为外部依赖,以便在本地打包时不会将这些依赖打包进去。 `chainWebpack` 中的 `plugin` 可以获取到生成的HTML插件实例,我们通过修改它的选项来实现在HTML中引入CDN链接。 3. 在需要引入CDN的页面中,在 `head` 标签中添加以下代码: ```html <% if (htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.css && htmlWebpackPlugin.options.cdn.css.length) { %> <% htmlWebpackPlugin.options.cdn.css.forEach(item => { %> <link href="<%= item %>" rel="stylesheet"> <% }) %> <% } %> <% if (htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.js && htmlWebpackPlugin.options.cdn.js.length) { %> <% htmlWebpackPlugin.options.cdn.js.forEach(item => { %> <script src="<%= item %>"></script> <% }) %> <% } %> ``` 上述代码会根据 `vue.config.js` 中配置的CDN链接来动态生成HTML中的 `link` 和 `script` 标签,实现在页面中引入CDN链接。 需要注意的是,由于CDN链接可能会随时变动,因此在实际使用时需要根据情况进行更新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值