我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何进行定量的CDN加速效果分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何进行定量的CDN加速效果分析

本篇文章给大家分享的是有关如何进行定量的CDN加速效果分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

指路牌

  • CDN

  • 网站静态资源加速

  • 定量展示CDN加速效果

  • CDN配置好了但是没有加速效果?

适用场景

  • 第一次接触”用户体验提升

  • 网站具有大量图片、css、js等静态资源

  • ECS购买了固定带宽,带宽成为性能瓶颈

环境

  • 一个已完成“备案”的域名

    域名购买后需要实名认证+备案,大概需要花费“14~20天”。

背景

我曾接触过两个项目,一个是基于web的AR项目,一个是使用了大图的展示性项目。两个项目都有一个共同特点:加载速度很慢。慢到什么地步呢?页面完全加载完的时间量级均在两位数(10s左右),极端情况下甚至会达到20s甚至更久。

如此打开速度对于一款应用的体验来来说是灾难级的,因为不会有一个用户有耐心等待如此长的时间,web前端针对加载速度慢在技术上具有很多解决方案:如使用一张像素很低体积很小的图片先显示以“安慰”用户,或使用分批加载等。

但以上两种方案都无法解决我碰到场景的问题,因为AR项目的js文件与AR文件都同样庞大,以上方案都不能完全挽救两位数量级加载时间的灾难级体验。

幸运的是两个项目都是展位性质的,只需要利用浏览器自身的缓存机制,提前打开几次页面就能将加载时间将时间轻易降到50ms附近,让观众户完全感觉不到加载的耗时。

但是如此雨来,展示的互动性将变得很受限,因为用户无法使用自己的设备亲自打开体验应用,只能使用讲解员手中提前缓存好数据的设备。

我调研CDN的初衷,也是为了尝试解决以上问题:能够让完全没有缓存用户的设备在“第一次接触”应用时能够较快打开应用,提高互动性。

原理&思路

要解决现有的问题,那么需要先分析一下性能瓶颈到底出在了什么地方。网页加载速度慢的根本原因当然是文件过大,但监控服务器资源占用等参数后我将参数锁定在了两个:地理位置、带宽。

接下来我们就来看看CDN到底能不能实现加速,以及能够加速到什么地步?

步骤

为了确定上面两个问题,我选取了项目中的部分文件作为用例,做了一系列测试,得到三组对比数据如下:

一、境内外ECS对比
如何进行定量的CDN加速效果分析

  • “行”为该文件加载耗时,单位为ms、s

  • 时间读取自Chrome控制台

  • 禁用了浏览器cache,为了避免误差每次测试前均再一次手动删除缓存图片与记录。

  • 每个文件在一个ECS测试3次,因此每个文件一共2组,6个数据。

  • AWS的ECS在带宽上远比Ali的ECS高,Ali这的ECS的带宽为固定带宽5Mbps(也即0.625MB/s)。

现象

  • 位于奥兰多的服务器和位于张家口的表象不相上下,

  • 文件大小达到4MB左右均会开始向10s逼近,

结论:
由于空间位置原因无法获取文件在奥兰多处的加载耗时,不严谨的得出结论:AWS在带宽上弥补了物理距离的差距,二者速度差异不大。

二、在AliCloud的ECS,使用CDN加速与不使用CDN加速对比
如何进行定量的CDN加速效果分析

C、D、E三列为先前测试数据
F、G、H、I列为使用CDN加速后测试数据
G为同局域网下同事电脑
H、I为使用手机热点4G网络下在另一台设备Mac上的时间表现

现象

  • F列为本人PC,具有非常明显的加速效果,

  • G、H、I三列均没有任何变快表现,甚至还更慢了……

结论:

  • Ali的CDN难道是针对单个IP进行加速,来欺骗消费者的吗?

    这个结论当然是错的,但是数据上又呈现出了以上特点,又是什么原因导致的呢?继续往下看

三、在AliCloud的ECS,使用CDN加速,并进行“数据预热”后数据对比
如何进行定量的CDN加速效果分析

C、D、E为第一组测试数据,无CDN情况下性能表现
F为第二组测试数据,进行CDN加速但无数据预热时在一台新设备上的性能表现
H、I、J为使用CDN加速后,分别在同事G与另外两个完全没有开过网站的设备上打开网站的性能表现。

现象

  • 在没有数据预热前,CDN加速基本没有任何提速效果

  • 进行数据加热后,文件加载数据明显提升非常多。

结论

  • CDN在数据预热后实现了网站加速的效果,对比数据预热前后同事G设备上的性能表现,加速效果大约在5~15倍之间。

从最后的效果效果来看,将文件打开速度由10s级降到将近ms级,确实极大优化了用户“第一次接触”的用户体验,能够让用户有耐心讲应用使用下去,也能够在展位上让观众能够使用自己的设备打开服务,对交互和受众面的提升都具有非常大的好处。

后记

以为这就完了?后面还有内容,量化说明CDN的加速效果并不是这篇文章的主要目的。

数据预热”这一名词时在CDN的原理文章比较少提到的,在得到第二组测试数据的时候,我就十分困惑的提交了工单,才得知了“数据预热”这一环节。进一步和工程师询问得知,AliCloud的CND默认是抢占式的,就像硬盘与内存的映射关系,使用越频繁,加速内容在冗余站点的存放时间与获取资源也会越多。

因此我的PC所接入的加速站点具有很好的加速效果

而低频或刚添加的资源默认并不会传输到冗余站点,需要在控制台手动进行“数据预热”。且即使预热后,长时间不使用也会从冗余站点抹除,被替换掉。当然,从所支付的费用来说,这一抢占机制是很合理的,毕竟我完成所有测试也只花费了0.26RMB的费用。

在第三组数据中,应该能发现即使数据预热后,加速效果在不同设备间的表现效果也是存在差异的,如在同事C设备上,加载数据都在ms级,而在同事G与与同事L设备上,却是个位数的s级。细心的读者也许会发现,我在CDN设备上面都标注了一个地理信息,我的个人PC是湖北、同事G是山西,同事L与同事C是甘肃。(在第二组数据中由于还不清楚这个概念,当时没有记录)

这些地理位置,是AliCloud冗余加速站点所处的地理位置的信息,这里一个很有意思的现象是,以上所有4台设备都是处在同一个局域网下的4个独立的设备,3台Win,1台Mac,走同一个网关接入因特网,但每一台设备接入的CDN加速站点都不相同!

两个同属甘肃的服务器IP不相同
同一台设备接入的冗余站点始终相同

也因为以上原因,导致他们加速效果存在差异,这一点是让我非常不理解的,为什么同同一个局域网下的设备接入加速站点的位置却有如此大的差异?接入冗余加速站点的规则到底是怎样的?这是我一直没有弄明白的问题,在工单上询问工程后也没有得到明确的回复,姑且只能搁置于此。

以上就是如何进行定量的CDN加速效果分析,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何进行定量的CDN加速效果分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何进行定量的CDN加速效果分析

本篇文章给大家分享的是有关如何进行定量的CDN加速效果分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。指路牌CDN网站静态资源加速定量展示CDN加速效果CDN配置好了但是没有
2023-06-05

如何进行sprints高效使用的理论分析

如何进行sprints高效使用的理论分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在项目管理的工作中,究竟是选择传统的瀑布式管理方法,还是灵活的敏捷管理方法呢?很难把一
2023-06-05

Golang开发经验分享:如何进行高效的性能分析

随着计算机技术的不断发展,性能已成为了软件开发中重要的指标之一。而在Golang开发过程中,性能也是一个非常重要的方面。为了保证程序的高效率运行,必须进行性能分析和优化。下面就为大家分享一下如何进行高效的性能分析。1.基本概念在进行性能分析
Golang开发经验分享:如何进行高效的性能分析
2023-11-23

phpcms中如何对网站流量进行统计和分析?(在phpcms中,应如何进行网站流量的统计与分析工作?)

phpCMS中网站流量统计与分析指南:集成第三方工具(谷歌分析、百度统计等)利用PHPCMS内置功能(网站统计图表、访问统计等)设置统计代码,配置统计设置,授予访问权限分析流量数据(流量概况、来源、页面表现等)利用洞察力优化网站(提升流量、优化内容、改善体验)提示:定期查看、使用过滤器、结合不同工具、考虑外部因素。
phpcms中如何对网站流量进行统计和分析?(在phpcms中,应如何进行网站流量的统计与分析工作?)
2024-04-02

如何进行中隐藏“投诉”“举报”按钮的纯JS代码实现效果分析

如何进行中隐藏“投诉”“举报”按钮的纯JS代码实现效果分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在做微信投票,小说阅读类,以及大部分推广类微信H5页面经常会遇到因为被举
2023-06-04

如何进行mybatis实现批量修改xml方式的分析

本篇文章为大家展示了如何进行mybatis实现批量修改xml方式的分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。mybatis批量修改-xmlmybatis批量查询,批量新增就不聊了,今天看看批
2023-06-21

如何进行Java任务队列的定义与代码的分析

如何进行Java任务队列的定义与代码的分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Java任务队列需要我们详细的学习,当然我们在不断的使用中还需要注意相关信息的学习。
2023-06-17

PHP7中的生成器:如何高效地处理大量数据和加速代码执行速度?

PHP7中的生成器:如何高效地处理大量数据和加速代码执行速度?随着互联网的发展,我们面对的数据量越来越庞大,针对大量数据的处理成为了开发人员的一项重要任务。而在PHP7中引入了生成器(Generator),它为我们提供了一种高效地处理大量数
2023-10-22

PHP7中的生成器:如何高效地处理大量数据和加速代码的执行速度?

PHP7中的生成器:如何高效地处理大量数据和加速代码的执行速度?概述:在PHP7中,引入了生成器(Generator)的概念,它是一种特殊的函数,可以按需生成数据流。生成器的出现在处理大量数据和提高代码执行速度方面,提供了一个非常有效的解决
2023-10-22

Golang开发建议:如何进行高效的日志记录和分析

Golang开发建议:如何进行高效的日志记录和分析引言:日志记录在软件开发中起着至关重要的作用。它不仅可以帮助我们追踪和解决问题,还可以为后续的优化和改进提供有价值的数据支持。本文将介绍如何使用Golang进行高效的日志记录和分析,帮助开发
Golang开发建议:如何进行高效的日志记录和分析
2023-11-22

如何进行增加prev,next按钮实现问题的遍历分析

如何进行增加prev,next按钮实现问题的遍历分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 1)修改strings.xml,增加两个按钮 2023-06-04

Win8.1系统下如何对磁盘进行分区便于分类加快读写的速度

为什么要给磁盘进行分区?很多用户都不了解其中的缘由。对磁盘进行分区,一方面便于分类,另一方面也有助于加快读写的速度,是一个一举两得的举措,那么在Win8.1系统下如何对磁盘进行分区呢?Win8.1系统磁盘分区方法:一、首先在Win8.1桌面
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录