zoukankan      html  css  js  c++  java
  • 构建高效的移动终端 Web应用程序(Building High Performance Mobile Web Applications)

    视频及实例地址:
    http://youtu.be/jD_-r6y558o
     
    目录:
        1. 概述
        2. 配置调试环境
        3. 受关注的页面加载性能指标
        4. 页面优化前性能分析
        5. 图片优化
        6. 压缩JS
        7. CSS优化
        8. 延迟加载
        9. 手机web页面点击事件优化
        
     
    1. 概述:

    Ryan Fioravanti 在 2012年7月Google IO 上做了“Building High Performance Mobile Web Applications” 的讲演,该讲座主要以网站http://www.html5rocks.com/en/ 为案例,应用Chrome PC Mobile联调功能对其现有性能进行分析,然后逐步对其优化,对比网页优化前后在性能上的提升。本文主要对其视频进行些翻译并转述,内容较浅,只适合初、中级开发了解。

    2. 配置调试环境(只支持android4及以上版本,中国访问Google会有一定限制可能影响其正确调试):

    • PC上安装Chrome Canary并安装插件PageSpeed插件(方便调试和分析)
    • 上安装java SDK并添加其bin路径到系统Path下
    • PC上安装Android SDK, 安装后打开SDK Manager.exe,勾选tools项更新
    • 在手机设置->开发人员工具中启用USB网页调试功能
    • 使用USB连接手机,然后在PC命令行下进入android sdk\platform-tools下,输入命令adb forward tcp:9222 localabstract:chrome_devtools_remote.
    • 确认设置成功后,使用PC上的 Chrome访问 http://localhost:9222 就可以开始对手机上chrome所访问的网站进行Debug了
    3. 受关注的页面加载性能指标:
    • navigationStart
      • 页面加载完所需时间
    • responseStart
      • 浏览器即将开始接受页面内容的时间
    • domContentLoadedEventStart
      • 页面交互即将开始的时间
    • loadEventStart
      • 即DOM书和资源下载完毕时间
     
     
    4. 页面优化前性能分析
     
        初始化所需时间:
     
     
      使用PageSpeed分析:
     
    分析结果:
     
    5. 图片优化
     
    5.1 使用按比例缩放图片(即依据浏览器尺寸进行不同大小图片的请求,该处理为RESS 设计的一个要点)
    优化前后对比:
     
    5.2 替换PNG格式图片为JPEG格式(注意透明背景图片或图标不可进行替换,否则透明会变为白底)
    优化前后对比:
     
     
    6. 压缩JS
    使用PageSpeed 插件分析时,会对未压缩js进行提示:
     
    查看JS大小并分析是否被压缩
     
    使用压缩后的jQuery库性能对比(注意:此处需要清空缓存后才可看出性能提升)
     
    提升网站响应速度,可使用如下压缩工具对所有JS进行压缩,
    • Closure compiler
    • YUI compressor
    • Online JavaScript compression
    7. CSS 优化
    7.1 使用Profiling 查找最耗时CSS:
     
    手机Web常见CSS问题:
    • 效率低下的CSS
      • 使用常用关键字后代选择器作为 选择器  (Descendant  selectors with common keys)。该种行为在定位该选择器时耗时且嵌套多为冗余.
    body *{...}
    ul li a{....}
    #footer h3 {...}
    • 复杂选择器
    ul mtop.blue_na{}
     
     7.2 CSS 优化建议
    • 避免通用标签作为 选择器
      • 最好可以通过继承获取样式
    • 让 选择器 规则尽可能具体
      • 最好使用标签class(伪类名)和ID做为选择器
    • 使用class(伪类)替代 后代选择器
       
     
    7.3 使用压缩后的CSS(未提及)
     
    8. 延迟加载
    8.1 js延迟加载。选择将一些页面加载前不需执行的脚本推迟加载(后面会有文章对js延时加载进行介绍)。
        如:将下述脚本延迟加载
     
    加载方法:
     
     
    优化后:
     
     
    8.2 DOM延时加载
     
     
     
    9. 手机web页面点击事件优化
    Android手机Chrome在处理页面点击事件时会有300ms的延时用以判断是否是双击等操作。
     
    规避该300ms方式:
    注销点击对象的onclick事件,并将该onclick事件处理逻辑绑定到触摸touchend事件中。
  • 相关阅读:
    c++11 可变参数模板类
    c++11 可变参数模板函数
    c++11 函数模板的默认模板参数
    c++11 模板的别名
    超声波模块SRF05
    Eclipse中快捷键的使用
    移动互联网教育领域或将出现新的风口?
    java Date 和 javascript Date
    linux下安装node.js
    J2EE之初识JSP
  • 原文地址:https://www.cnblogs.com/Jack8Chen/p/2908019.html
Copyright © 2011-2022 走看看