在这个信息爆炸的时代,使用移动终端获取新鲜信息已经是大势所趋,但是移动网页浏览速度还有巨大的提升空间。据 Strangeloop Networks 统计,在同样的网络条件下,使用移动端访问相同网页平均会比 PC 端慢40%!然而另一方面,用户对网速的要求却步步紧逼。研究表明,网页响应时间可容忍的阀值是2秒,一旦超过3秒,会有40%的用户放弃浏览页面。

\\

所谓天下武功,唯快不破!想要设计更快的网页优化速度,我们可以借鉴成功的优化经验,全球最大的CDN服务商Akamai(阿卡迈)针对移动体验的问题,提供了一套较为完整的解决方案,感兴趣的读者可以前往注册下载;与此同时,我们也可以采用直接的技术手段,本文从PC端优化经验、HTTP/2优化协议、优化蜂窝网络、以及智能的加载方案设计四个维度,总结了一些提升移动网页加载速度的方法和技巧。

\\

一、PC 端网站优化方案

\\

\\

不论在 PC 还是在移动浏览器上,只有不到10%的时间是用来读取页面的 HTML 的。剩下的90%是用来加载额外的如样式表、脚本文件、或者图片这样的资源和执行客户端的程序。因此,许多在 PC 端的传统网页优化方案在移动端仍然可行。比如说:

\\

1.1 减少每个页面的  HTTP 请求数

\\

I. 将共用的 JavaScript 和 CSS 代码放在公共的文件夹中与多个页面共享。
\II. 确保在一个页面中相同的脚本不会被加载多次。同时,将脚本中的 Click 事件改为 On Touch 事件来减少固有的300ms延迟。
\III. 使用 CSS Sprites 来整合图像,将多张图片整合到一个线性的网状的大图片中。
\IV. 使用 Cache-Control 或者 Expires 标记来实现浏览器缓存,从而减少不必要的服务器请求,尽可能地从本地缓存中获取资源。

\\

1.2 减少每个请求加载的大小

\\

I. 使用 gzip 这样的压缩技术来压缩图像和文本,依靠增加服务端压缩和浏览器解压的步骤,来减少资源的负载。
\II. 整合并压缩 CSS 与 JavaScript,删除不必要的字符与变量。
\III. 动态地调整图片大小或者将图片替换为移动设备专用的更小的版本。
\IV. 分段加载和隐藏加载等手段,可以将不可见区域的内容延迟加载或暂时不需要的脚本进行延时读取

\\

二、采用更优的 HTTP/2 协议

\\

2.1 多路复用技术带来的请求-响应加速

\\

I. HTTP/2 采用多路复用的技术,允许同时通过单一的 HTTP/2 连接发起多重的请求响应消息,从而大大的加快了网页加载时间。

\\

\\

2.2 更节省空间的二进制头部数据嵌套

\\

\\

I. HTTP/2 采用二进制格式传输数据,并把他们分割为更小的帧,相比于 HTTP/1.x 的文本格式传输更为方便。

\\

II. HTTP1.x 的 header 由于 cookie 和 user agent 很容易膨胀,而且每次都要重复发送。HTTP/2 对消息头采用 HPACK 进行压缩传输,能够节省消息头占用的网络流量。

2.3 Server Push 带来的更快的资源推送

\\

I. 通过 Server Push 功能,服务端可以主动把 JS 和 CSS 等文件发送给终端,而省去了解析HTML 请求的过程。简单的说,当你需要访问某个文件的时候,它已经在乖乖的在后台躺好了。

\\

三、优化蜂窝网络

\\

\\

I.具有实力的内容服务商可以把资源配置在离用户地理位置更近的地方,缩短最后一公里。
\II. 与移动网络服务商合作共同开发算法,实现实时自动调整互联网路由,避免网络拥堵、丢包与离线问题。
\III. 还可以采用优化TCP协议的方法,通过借助主流的Cubic、Bic以及Westwood算法,可以有效的避免网络拥堵。
\IV. 此外,还可以研究算法改善NAT嵌套导致的网络延时,也可以直接通过IPV6的连接协议规避NAT的延迟问题。

\\

四、设计更加智能的加载方案

\\

4.1采用分段加载和隐藏加载

\\

\\

I.分段加载又称懒加载,它能够在用户滚动页面的时候自动获取更多的数据,从而可以很大程度上减少服务器端的资源耗用。诸如Lazyload.js或Belazy.js都是非常成熟易用的开发包。
\II. 隐藏加载是在页面显示后再加载用户暂时看不到的信息,诸如图片展示窗里除了第一张图片,其他图片都可以采用隐藏加载的技术。

\\

4.2采用预加载技术

\\

\\

I.资源预加载目的是让浏览器在空闲时间下载或预读取一些文档资源,用户在将来将会访问这些资源时浏览器能快速的从缓存里提取给用户。

\\

\\

II. 预加载技术不仅支持PC,也已经支持Android系统,可惜的是目前尚不支持iOS Safari。
\III. 事实上,Prefetch是网页优化里Prebrowsing的一部分,开发者还可以通过DNS-Prefetch , Subresource,Preconnect,Prerender等技术来实现预先解析DNS与提前渲染等优化。

\\

4.3通过机器学习的手段智能加载

\\

I.通过机器学习的方法,网站可以自动收集并分析用户的浏览习惯与访问信息,然后通过预加载的手段将最有可能访问的信息提前加载完成。

\\

\\

4.4智能调整图片分辨率

\\

I.图片通常占用了Web页面加载的大部分网络资源,也占据了页面缓存的主要空间。 根据统计,一个站点平均62%的内容都是由图片组成。管理这些图片除了需要考虑到图片的大小、格式、旋转、艺术处理、增加水印、存储空间等,还要顾及海量的设备的屏幕尺寸,以及适应终端上运行的浏览器。

\\

以上是我们给开发者总结的一些经验分享,希望能够对读者有所帮助,大家也可以注册下载阿卡迈的技术PPT详细了解如何通过CDN 的方式为(移动)网页提速。我们需要明确的是,专注移动网页的性能优化无疑是开发者需要努力的方向,然而用户并不等于机器。用户不关心你的网站发出了多少请求,也不在乎你的屏幕渲染得有多快,他们只关心网站带给他们体验上的感觉。因此,开发者在进行技术优化时,不仅仅是在某一技术点上的优化,更需要从网站的整体性能规划把控,让整个网站给客户呈现出更快的加载体验!

新技能Get:如何利用HTTP技术提升网页的加载速度相关推荐

  1. 利用Crowbar抓取网页异步加载的内容 [Python俱乐部]

    利用Crowbar抓取网页异步加载的内容 [Python俱乐部] 利用Crowbar抓取网页异步加载的内容 [Python俱乐部] 利用Crowbar抓取网页异步加载的内容 在做 Web 信息提取.数 ...

  2. miniblink载入html,(转)miniblink跨线程异步JS回调,及miniblink提升首屏加载速度的代码...

    转自:aardio培训群 , 感谢 Jacen He 校长提供代码 miniblink 不能回调JS确实非常麻烦, 因为用web做界面,很自然的会调用耗时操作,不能回调逻辑会变的很复杂. 针对这个aa ...

  3. 如何利用 webp 进行小程序图片加载速度的优化

    导语 最近很长一段时间没有更新博客,一方面是自己最近参与了小程序的开发,另一方面也是自己略有些怠惰,给自己记个过~那么现在既然回到学校那么还是要分享一些知识的. 前一阵子参与微信小程序开发时遇到了一个 ...

  4. 微软释新.NET Core 3.0预览版可加速程序加载速度ReadyToRun

    微软释出了最新的.NET Core 3.0第6预览版,更新了能够加速程序加载速度的ReadyToRun(R2R)格式,以及可以缩减应用程序大小的组译连结(Assembly Linking)工具IL l ...

  5. AI一分钟 | 李开复:AI创业公司估值今年会降20%~30%;谷歌让搜索结果加载速度提升两倍...

    ▌李开复:AI 创业公司估值今年会降 20%~30% 创新工场创始人李开复的新书<AI·未来>昨天正式全球发售,在发布现场,李开复谈到目前国内 AI 创业企业现状时表示,今年国内 AI 创 ...

  6. 前端性能优化(一)提升加载速度

    加入QQ群:864680898,一起学习进步!点击群名可查看本人网站,有最新文章! 前端性能优化----(一)提升加载速度 由于现在大部分是做的单页面应用了,那么会导致页面的首次加载时间非常的长.常见 ...

  7. 提升页面加载速度的方案

    性能优化是一个庞大而相对复杂的知识,如今互联网发展迅速,市场竞争激烈,在这样的环境下一个网站的性能决定着一个项目的好与坏.为了降低软件项目的跳出率.提高访问速度.减少加载时间.带给用户流畅的终端体验, ...

  8. 白话科普系列——网站靠什么提升加载速度?

    随着生活节奏的不断加快,时间变得极其宝贵,等待页面加载的时间也随之缩短.这样一来如何留住客户变成了一项重要的考验.而减少页面加载等待时间,加快加载速度,就成了提高用户参与度S,提升业务可靠性的有效策略 ...

  9. 如何通过预加载器提升网页加载速度

    预加载器(Pre-loader)可以说是提高浏览器性能最重要的举措.Mozilla 官方发布数据,通过预加载器技术网页的加载性能提升了19%,Chrome测试了 Alexa 排名前2000名网站,性能 ...

最新文章

  1. 我看ITIL在中国(三):嫁接的精髓
  2. 启动VIP报CRS-1028/CRS-0223致使VIP状态为UNKNOWN故障分析与解决
  3. linux打开u盘里的文件,Linux下U盘内容为只读文件不能存储其他内容的解决办法
  4. linux的apache安装在哪个目录,在linux系统下apache的默认安装路径在哪
  5. 【渝粤教育】国家开放大学2018年秋季 0109-21T公司财务 参考试题
  6. 开源词法分析工具LAC重大升级!打造属于自己的个性化分词器!
  7. notepad出现中文显示方格处理方法
  8. Windows10/Servers 2016的TrustedInstaller权限获取(及乱改System后救砖
  9. SQL数据库面试题以及答案(50题)
  10. 02怎么学数据结构?
  11. python3爬虫爬取网页图片简单示例
  12. js中submit失效
  13. idea 找出TODO
  14. 关于KingbaseES启动数据库服务时,license授权文件路径的相关问题
  15. C语言---找零问题------程序优化
  16. 矩阵分析(1)--一些基本概念
  17. Navicata查看已经创建MySql的触发器
  18. 十年技术进阶路:让我明白了三件要事。关于如何做好技术 Team Leader?如何提升管理业务技术水平?(10000字长文)...
  19. vue字符云-------把老婆放到云端
  20. 信号与系统——傅里叶变换☞一维信号

热门文章

  1. java循环do while_Java中for、while、do while三种循环语句的区别介绍
  2. spss正态性检验_SPSS和R中的正态分布的确定和几何均值的计算
  3. atom配置python环境_Python编程:用VScode配置Python开发环境
  4. python分析nginx日志_利用python分析nginx日志
  5. 微软服务器延迟,经过六个多月的延迟,微软终于推出Hyper-V Server 2019
  6. 如何使用nginx配置SSL证书?
  7. [Spring Boot核心功能]1. SpringApplication 启动引导类(2)
  8. Teamcenter 入门开发系列问答(4)
  9. 10打开没有反应_【专利】表面施胶剂的反应装置
  10. php mysql select where_PHP MySQL Where 子句