zoukankan      html  css  js  c++  java
  • 前端性能优化方案

      1.在js中尽量减少闭包的使用(闭包不会释放栈内存)

        A:循环进行事件绑定时,尽可能使用自定义属性,而不用创建闭包来存储信息。

        B:在最外层形成一个闭包,把一些后期需要的公共信息进行存储,而不是每一个方法都创建一个闭包(例如单例模式)。

        C:尽可能手动释放掉不需要的内存。

          。。。

      2.进行js和css文件的合并,减少http请求的次数,尽可能将文件进行压缩,减少请求资源的大小。

        A:webpack这种自动化构建工具,可以帮我们实现代码的合并和压缩(工程化开发)

        B:在移动端开发过程中,如果代码不是很多,直接将css和js写html中。

      3.尽量使用字体图标和SVG图标,来代替传统的PNG等格式的图片(字体图标等是矢量图)

      

      4.减少对DOM的操作(主要是减少DOM的重绘和回流(重排))

        A:关于重排的分离读写(浏览器会将连续dom操作一起缓存起来一起操作)

        B:使用文档碎片或者字符串做数据绑定(DOM的动态创建)

      5.js避免“嵌套循环”(会额外增加很多次循环次数)和“死循环”(浏览器会死机)

      6.采用图片“懒加载”,加快第一次加载的速度,实际并没有减少请求次数

        步骤:开始加载页面是,所有的真实图片都不去发送请求,而是给一张占位的背景图,当页面加载完后,并且图片出现在可是区域再去做图片加载。

      7.利用浏览器和服务器端的缓存技术(304缓存),把一些不经常变更的资源进行缓存,例如js和css文件。目的就是减少请求大小。

      8.尽可能使用事件委托来处理绑定的操作,减少DOM的频繁操作。

      9.减少css表达式的使用

    #box{
      position:fixed;
      left:  expression(document.body.offsetWidth-110+'px');
      top:  expression(document.body.offsetWidth-110+'px');
    }

      10.css选择器解析规则从右到左进行解析

    .container .link a{
      先找到所有的a,再次筛选.link类中 ,最后再找.container类中。。
      所以应减少标签选择器的使用。
    }

      11.css雪碧图技术(css sprite/css 图片精灵)

        把所有相对较小的资源图片汇集到一张大图上,通过背景定位展示对应的小图。

      12.避免重定向(301:资源永久转移/302:暂时转移)

      

      13.减少cookie的使用(最主要是减少本地cookie储存内容的大小),因为客户端操作cookie的时候,这些信息总是传来传去。

      14.页面中数据获取采用异步编程和延迟分批加载

        使用异步获取数据,是为了降低http通道的阻塞,不会因为数据没有请求而耽误下面的渲染,提高页面加载速度。(可以将需要动态绑定数据的区域先隐藏,等数据返回绑定完成再让他显示)

        延迟分批加载类似于图片懒加载,是为了减少页面第一次加载请求的次数。

      15.页面出现音视频标签,我们不让页面加载的时候加载这些资源(资源太大)

        方案:只需设置preload=“none”,页面加载完时就会开始加载。

      16.交互时,数据尽可能基于json格式进行传送(处理方便,资源偏小)==》相对于XML

      17.进行js封装,减少冗余代码。

      18.css中设置定位后,最好使用z-index改变层级,让盒子不在同一平面上,性能会提高一丢丢。

      19:基于AJAX的get请求根据需求产生缓存(非304),但不建议使用。

      20.尽量减少filter属性滤镜的使用。

      21.css导入尽量减少@import是同步操作,资源返回才向下渲染,而link是异步请求。

      重量级优化:CDN加速(有钱上面的都是浮云。)

      22.配置ETAG(有点类似304缓存)

      23.使用window.requestAnimationFrame(js的帧动画)代替传统的定时器动画。

      24.减少递归的使用,避免栈内存嵌套,尽量使用尾递归。

      25.避免使用iframe

      26.利用H5提供localstorage本地储存或者manifest离线缓存,下次页面加载直接从本地获取,减少请求次数。

      29.基于script调用js的时候,使用defer或者async来异步加载。

    ===前端性能优化方案====

      第一类:减少请求次数和请求大小。

      第二类:代码优化:

          --》利于SEO

          --》利于拓展维护

          --》有利于减少性能优化

      第三类:DNS及HTTP通信方式的优化

      额外技巧:

        1.将css放在body上,将js放在body下(元素时带着样式渲染,js操作元素)。

        2.能用css实现就不要去使用js操作元素,能用原生js解决的就不要使用使用插件,绝对不使用FLASH(除了去兼容低版本的浏览器的播放)。

        ==》css处理动画的性能优于js,而且css的transform变形还开启硬件加速。

        3.js减少eval的使用,eval会执行两次。(当然该用还是用)。

        4.使用keep-alive,客户端与服务器端建立长连接。

        5.尽量使用设计模式来管理代码(单例,promise,发布订阅),方便维护和升级。

        6.开启服务器的gzip压缩。

        7.不要出现无效的链接,不利于SEO。提高关键字曝光率,img设置alt、设置meta标签,标签语义化。

  • 相关阅读:
    ps -aux --sort -rss |head 列出进程拿物理内存占用排序 使用ps aux 查看系统进程时,第六列即 RSS列显示的就是进程使用的物理内存。
    13 memcache服务检查
    shell 颜色
    expr判断整数是相加的值,返回命令的返回值$? 是0,但是少数情况是1,例如1 + -1 ,$? 的结果是1 ,判断要大于1最准确
    ZABBIX监控原理
    ansible分发密钥
    再来一个expect脚本
    11:菜单自动化软件部署经典案例
    19:批量检查多个网站地址是否正常
    数组迭代
  • 原文地址:https://www.cnblogs.com/angle-xiu/p/11347024.html
Copyright © 2011-2022 走看看