微信号:DevOps_Club

介绍:DevOps可以看作开发(软件工程)、技术运营和质量保障(QA)三者的交集、以快速的提高交付软件的质量为宗旨

CDN如何为移动端加速?

2015-12-17 20:24 知乎

CDN全称是Content Delivery Network,它对传统固网的加速有着显著的效果。通过cache和load balancing技术,它能够很好地解决网络拥挤和服务器过载问题。
但是现在对于现在最火的移动互联网,CDN是否有能力为移动端的APP加速呢。譬如手游,譬如视频业务。。如果只是将传统固网的CDN技术照搬到移动端,显然不会有很好的效果。移动端联网的速度主要取决于移动终端到移动通信网络的网关节点中间的这段距离。。

移动端的CDN究竟应该如何为APP进行加速?移动互联网究竟如何推动CDN技术的发展?




移动接入的最后一公里延迟较大,而CDN的缓存服务器不可能部署在基站到手机之间。导致整体的延迟无法达到最优,延迟(ping值)的确主要取决于接入端的无线那部分,但是速度并非完全取决于那个部分:

ping大于100ms就算比加大了,而用户能在3s内看到网页还是可以接受的,比如一个网页,有html, js , css 图片等:
影响用户观感的时间主要如下:
1. 连接建立需要时间,特别是多个连接的时候
2. 发送请求需要时间
3. 等待响应时间 -- 这个传统cdn的cache起作用了
4. 下载内容需要时间
5. 解析(rendering)内容需要时间

改进如下问题可以做些什么呢?主要是缓存优化,网络优化(TCP协议优化,降低连接次数),内容优化(内容尺寸优化,内容压缩)三方面
缓存优化:
1. 内容针对cache 优化,比如expire header之类。没错,假如内容在客户端cache了就不需要网络访问的时间了,这个是传统cdn就很重视的技术 , 而且可以无视网络的高延迟:>

网络优化:
2. tcp优化,高延迟环境下丢包会大大增加tcp延迟和降低传输速度,tcp协议栈优化有助于改进这点, 特别是下载内容的时候 -- 请google "fast tcp"
3. 减少tcp连接数量,比如利用http1.1 Persistent Connections 和 pipeline 技术。 还有网宿的利用sdk来减少连接
4. 刚才说的pipeline可以提高发送请求速度
5. 合并小文件,比如 css , js 等, 这会修改html内容。合并以后会减少请求次数
6. CDN 更改内容,将小文件内容 inline 话,比如将一些 js 脚本从独立文件改为直接放到 html 中间去,这下省了好几个包往返,很划得来

内容优化:
7. 优化内容尺寸,比如html、js优化和图片优化,这可以改善下载时间。 图片压缩(比如webP等更高压缩率的图片压缩方式等),图片文件尺寸相对较大,在不影响质量的情况下压缩个30-60%可以获得很好的效果,CDN还可以识别手机设备和浏览器的特性,来获得更高的压缩效果。
8. gzip等传输方式可以节约带宽缩短网络传输时间。
9. js 解析优化,比如js文件放到页面后面防止阻塞页面解析,这个对于前端优化不错,但是对于cdn更改页面可能会造成一些bug。

以上很多东西都和传统cdn内容透明传输的方式不一样,这是需要注意的。
另外,移动网络最后一公里的速度肯定还是能够有一定提升空间的,这要看运营商了。目前来看4G的延迟已经不算大了,考虑到4G铺开的速度,还是很值得期待的

参考阅读 - 请自行google :
1. mod_pagespeed
2. W3 Total Cache
3. Fast TCP 、 E-TCP
4. Akamai

另外说一下视频,视频的观看质量主要取决于有效带宽而非ping延时(当然带宽同时受延时和丢包率的影响),主要的一些技术手段主要就是 adaptive streaming (根据带宽自动切换码率) 还有 Persistent Connections (改进有限)。



还有移动端加速可以参考google的mod pagespeed技术,在源站上做优化。另外可以在tcp优化上多下功夫,举例,不同网络环境下的init cwnd的调整,及拥塞算法的调整,针对per connection给出不同的init cwnd与不同的拥塞算法。前提是需要收集足够的simple做分析,包括不同的ip段到节点的tcp的相关的参数rtt,rto等等等。



国内最大的CDN服务商之一网宿科技的解决方案是从应用端入手。不久前,网宿科技正式发布了其专门为移动互联网开发的加速产品MAA(Mobile Application Accelerator)。MAA是一个集成了几行简单代码的SDK,开发者只要将这些SDK集成到自己的应用当中,就可以实现优化网络连接的目的。传统CDN厂商的移动互联网新角色:网宿如何为手机App进行加速?.不过这个加速方案对视频好像没哟涉及太多,效果目前也没有看出有多大?同时,infoQ上也刊登了一些说明,为什么CDN对移动客户端加速“没有”效果为什么CDN对移动客户端加速“没有”效果,核心观点就是最后一公里的问题CDN解决不了,还必须依靠运营商



 
DevOps 更多文章 我眼中的DevOps WEB开发者应该有哪些必备的技能? 十个最适合 Web 和 APP 开发的 NodeJS 框架 Java最伟大的价值 58同城前后端分离开发模式实践
猜您喜欢 int main()还是void main() 完整Java开发中JDBC连接数据库代码和步骤 学习编程的七个阶段 仿京东金融选择金钱刻度尺效果 基于Docker的构建流程 (第一部分) - 持续集成及测试