美文网首页
淘宝页面的性能优化

淘宝页面的性能优化

作者: Bookish倩宝 | 来源:发表于2016-09-30 09:30 被阅读0次

    挑战:

    数据来源多
    串行请求渲染模块
    运营数据和个性化数据
    数据兜底容灾

    影响首页性能的因素

    1 依赖过多
    数据请求分为:静态资源,CDN缓存加速静态资源,后端接口
    2 无法直接输出首屏数据
    3 模块过多
    4 图片过多,翻页往下滚动

    网页性能衡量指标

    1 FPS 屏幕刷新率为60fps,当页面元素动画、滚动或者渐变时绘制速率小于 60,就会不流畅,小于 24 就会卡顿,小于 12 基本认定卡爆了。
    2 DOMContentLoaded 和 Load
    DOM 加载并且解析完成才会触发 DOMContentLoaded 事件。DOM过多或者嵌套过深,时间回较长
    3 流畅度
    流畅度是对 FPS 的视觉反馈,FPS 值越高,视觉呈现越流畅。为了保障页面的加载速度,很多内容不会在页面打开的时候全部加载到客户端。

    淘宝首页的性能优化

    1 关键模块优先,懒加载
    其他模块加载时间
    (1)当页面中触发mousemove scroll mousedown touchstart touchmove keydown resize onload这些事件的时候,说明用户开始与页面交互了,程序必须开始加载。
    (2)设定了一个超时加载,5s 之后,不论页面加载情况如何,都会将剩下的非关键模块加入到懒加载监控
    2 懒执行,有交互才执行
    3 更懒的执行,刷新页面才执行
    4 图片尺寸的控制和懒加载
    5 低频修改模块,缓存请求
    有一些模块数据是很少被修改的,比如接口的兜底数据、阿里 APP 模块数据等,可以通过调整参数,设置模块的缓存时间

    优化的思考角度

    首屏一定要快
    滚屏一定要流畅
    能不加载的先别加载
    能不执行的先别执行
    渐进展现、圆滑展现

    (function() {
      var lastTime = 0;
      var vendors = ['ms', 'moz', 'webkit', 'o'];
      for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
        window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
        window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame'] || window[vendors[x]+'CancelRequestAnimationFrame'];
      }
      if (!window.requestAnimationFrame) {
        window.requestAnimationFrame = function(callback, element) {
          var currTime = new Date().getTime();
          var timeToCall = Math.max(0, 16 - (currTime - lastTime));
          var id = window.setTimeout(function() { callback(currTime + timeToCall); }, timeToCall);
          lastTime = currTime + timeToCall;
          return id;
        };
      }
      if (!window.cancelAnimationFrame) {
        window.cancelAnimationFrame = function(id) {
          clearTimeout(id);
        };
      }
    })();
    

    相关文章

      网友评论

          本文标题:淘宝页面的性能优化

          本文链接:https://www.haomeiwen.com/subject/jfmlyttx.html