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事件中。
  • 相关阅读:
    leetcode Remove Linked List Elements
    leetcode Word Pattern
    leetcode Isomorphic Strings
    leetcode Valid Parentheses
    leetcode Remove Nth Node From End of List
    leetcode Contains Duplicate II
    leetcode Rectangle Area
    leetcode Length of Last Word
    leetcode Valid Sudoku
    leetcode Reverse Bits
  • 原文地址:https://www.cnblogs.com/Jack8Chen/p/2908019.html
Copyright © 2011-2022 走看看