关于H5在移动端架构的优化设计总结

各大互联网公司采起的策略

    1、百度移动前端首页

                1. 对于首屏的静态文件css/js,在上线前所有编译直出到HTML文件中;整个首页的渲染只须要一次请求;css

                2.使用缓存;把不变的js/css/html所有存储到localstorage中去,而后根据cookie中添加版本号的MD5值判断是从服务器中更新仍是本地获取;html

                3.对于更多业务需求的js/css等静态文件,经过一个接口所有返回;前端

                4.DOM也缓存,咱们的模板和数据,也会被缓存至localstorage中;node

                5.使用iconfontweb

                6.卡片的异步加载与缓存segmentfault

                7.不在首屏的就要异步化,采用按需加载,而不是伴随首页一块儿加载缓存

                8.少许静态文件的域名,节省了DNS的解析性能优化

                9.极小的图片base64化,对于小于1k的图片,咱们将其变为base64编码,并融入到css中,一块儿换存到localstorage中去服务器

 

     2、美团WebView性能优化cookie

                1. 定义全局webView,减小webView初始化时间同时并发在Native本地去请求HTML页面内容;

                2.DNS解析优化,DNS采用和客户端API相同的域名,DNS会在系统级别进行缓存;

                3.同步渲染采用chunk编码;

                4.页面框架渲染;

                5.其它

     3、苏宁易购Hybrid架构设计方案

               1.针对图片的处理

        1.   样式背景图片处理和iconfont,以及base64图片转化的支持的

        2.   商品图片处理,使用webp格式图片

                 2.首屏

                    通用的处理方案:

 

        • 域名收敛

        • html 文档压缩

        • 静态资源合并

        • 首屏之外业务延迟加载,资源按需加载,图片懒加载

        • 雅虎军规常规优化

                3.开发方式对优化的影响

                        3.1   服务端输出数据方式 :所谓的服务端输出数据方式就是页面的html 源码包含了页面全部的数据

                        3.2   接口数据渲染方式 :咱们把 html 看作一个模板,只有静态的数据容器,全部的动态数据调用第三方接口利用 js 渲染成页面;同时采用使用客户端提供的原生方式请求接口,同时由于页面是一个静态模板容器,能够把页面引用的静态资源打成 zip 包动态更新至客户端,并支持增量更新的能力,当页面模板或者模板内引用的静态资源改变时,客户端会提早下载增量包,html 模板和内嵌的静态资源会提早经过客户端下载到本地,用户访问页面时就会从本地获取加载资源,极大的减小了白屏的几率。

                 4.  兜底防灾

               5.   性能监控               

     4、QQ空间移动时代Hybrid架构设计

        1.   从加载速度来看Native比H5好在两个地方 :

                1.1    首次加载速度可能相对比较快

                1.2     二次加载体验机制能够完爆H5,这里主要缘由其实咱们也看到就是缓存的逻辑

         2.    H5要赶超Native速度主要有两个点:

 

                1.1     首次进入的时候如何去提速;

                1.2     有缓存的状况(例如你之前进入过了),怎么实现秒开的体验,立刻可以出来内容。

        3.     传统H5加载方案

               

                3.1 把WebView启动和发送请求改为并行 

             

               3.2 Socket通道   

               

                3.3 二次进入速度优化

                

                3.4 E-Tag和Cache-Offline判断页面内容是否须要更新和离线缓存

                

                3.5 优化后的雏形

        1. 并行加载;

        2. HTML改为Socket通道去传输;

        3. WebView的HTML页面缓存管理;

             

    3.6 增量更新和动静分离方案

     

     

     3.7 QQ空间最终版

      H5的总体架构

                

        4、手机QQHybrid架构设计

            1.传统方式        

             

              问题:

             

            2.静态直出+离线预推

               

     

                问题表现:

                    产品经理确定是在dataServer上配置最新数据信息,但CDN上的页面内置的数据有可能仍处于上一版本,更差的状况是离线包服务器和offlineServer生成的HTML又是另一个版本。当用户本地的缓存和server同步不及时即常见的缓存刷新问题,颇有可能存储的数据又是另一份    

                   统一数据静态文件直出:            

              

                 关于offlineServer:

                    咱们offlineServer内部分为流控和offline计算两部分。当一个页面的全部资源须要进行离线包计算打包的时候,offline计算这部分除了把全部的资源打包,内部也会存储以前全部的历史版本,同时根据历史版本和最新版本生成全部的diff,即每一个离线包的差样部分。                                                

                  

             3.动态配置

                     3.1 动态缓存       

                        咱们在这中间加上以前提到地相似offlineCache的中间层sonicBridge,这个中间层首先会从Node.js服务器下载完整的HTML给WebView,同时会把下载回来的内容在本地完整地作缓存。

                     

                        3.2  减小传输数据  Node.js服务器并不会返回整个HTML给sonicBridge,而是返回给咱们称为data数据的部分。                         

                       

                      3.3 减小提交页面数据

                       

                        

        

 

            4.QQHybrid架构

                        咱们在WebScope的前端开发同窗作了一部分工做;2. 咱们的native层终端开发同窗作了bridge桥接,3.咱们后台的同窗作了不少的自动集成和offlineServer推送等工做。

                        

 

         5.图片优化

                        1.你们都比较熟悉WebP,并且Android对其支持也比较好,而QQ团队内部本身研发了叫SharpP的图片格式,在文件大小上能比WebP节省10%左右的体积。下面是抽取咱们CDN服务器上已有图片进行的数据比对。

                        2.针对不一样的机型返回不一样的图片的大小

                                 

           

           

          6.前端部署流程

                                 

                                 

           

        5、手机淘宝架构设计

                    1.传统优化

                           1.1   请求数优化

                            1.2   首屏多个动态接口合并请求                

                            1.3    禁止重定向

                     1.4  图片优化  

                                1.4.1 使用webp图片格式

                                1.4.2  根据q值 图片锐化值 DPI返回对应的图片大小和图片优化处理

                                1.4.3  Sprite图片

                2.Native端的性能优化

                       2.1  HTTPDNS

                       2.2  SSL+SPDY协议

                       2.3   域名收敛

                            2.3.1  域名最终形态(建议)

              • 页面请求 域名一个
              • 静态资源(css,js) 一个
              • 图片资源 一个
              • 动态数据一个
              • 数据统计一个

                               2.4   动态数据复用状态

                       2.5   预加载和离线化方案

                               2.6   统计方案优化

                3.渲染优化

                            3.1禁止使用iframe (阻塞父文档onload事件)

                            3.2禁止使用GIF图片实现Loading 效果 (下降CPU消耗,提高渲染性能)视频

 

            6、移动端架构H5优化总结

           1.web端优化总结

                  1.1   请求数优化,首屏多个动态接口合并请求  ,禁止重定向,禁止使用iframe,禁止使用GIF图片实现Loading 效果 (手淘)  

                        1.2   通用优化方案 (苏宁)

          • 域名收敛

          • html 文档压缩

          • 静态资源合并

          • 首屏之外业务延迟加载,资源按需加载,图片懒加载

          • 雅虎军规常规优化

             

                       1.3  使用webp格式和iconfont等图片优化方案 (手淘)

                       1.4 拆分页面结构(动态数据和静态存储数据)充分使用localStorage存储相关的数据;根据相关的版本MD5更新对应须要的动态模块数据;  (百度和手Q)

                       1.5  兜底容灾

                       1.6 性能监控 + 测速监控

                       1.7 数据监控

           2.Native端优化

                        2.1 添加本地Cache缓存策略,存储对应的本地HTML/CSS/JS资源/图片资源等;

                        2.2 全局WebView同时并发请求对应的H5首屏数据;

                        2.3 httpDNS,域名收敛 下降DNS解析的时间;

                        2.4 动态数据增量更新合并(手Q)

            3.服务器端优化

                        3.1   添加nodeJS自动化构建服务,JS/CSS直出到HTML内容,同时服务器端渲染

                        3.2   采用socket通道以数据包的方式+离线预推的方式,将增量更新的数据提早下发到APP.而后app组装好对应数据,供webView使用 (QQ空间)

             

           文献参考:

                    1.WebView性能和体验分析报告     

                    2. 70%以上业务由H5开发,手机QQ Hybrid的架构如何优化演进? 

                    3.手淘H5性能最佳实践

                    4.QQ空间面向移动时代Hybrid架构设计[视频+演讲稿]

                    5.QQ空间前端工程师如何作首屏优化

                    6. 聊一聊百度移动前端速度那些事  

                  7.【前端】移动端电商类展现页面性能优化实战

相关文章
相关标签/搜索