前端性能优化

2020-12-14  本文已影响0人  jasmine_6aa1
1,尽可能的缩小webpack或者其他打包工具生成的包的大小
{
  entry: {
   bundle: 'app'
    vendor: ['react']
  }
  plugins: {
    new webpack.optimize.CommonsChunkPlugin('vendor',  'vendor.js')
  }
}
2,防抖(debounce)/节流
/*
 * @fn:要防抖执行的函数
 * @wait:防抖等待的时间
 * @immediate: true 表立即执行,false 表非立即执行
 */
debounce(fn, interval) {
    let timeout;
    return function() {
          let ctx = this;
          let args = arguments;

          if (timeout) clearTimeout(timeout);

         timeout = setTimeout(() => {
            fn.apply(ctx, args);
      }, interval);
}}

/*
 * @fn:要防抖执行的函数
 * @wait:防抖等待的时间
 * @immediate: true 表立即执行,false 表非立即执行
 */
 
throttle(fn, interval) {
      let last = 0;
      return function() {
         let ctx = this;
         let args = arguments;

         let now = +new Date();
         if (now - last > interval) {
             last = now;
             fn.apply(ctx, args);
         }
}}

区别:防抖动和节流本质不一样;防抖是将多次执行变为最后一次执行,节流是将多次执行变成每隔一段时间执行。

3、图片懒加载(当图片出现在页面中,把data-src赋值给src)
<img src="http://s4.sinaimg.cn/mw69" alt="1" data-src="http://img4.imgtn.bdimg.com/it/gp=0.jpg">

当载入页面时,先把可视区域内的img标签的data-src属性值负给src,然后监听滚动事件,把用户即将看到的图片加载。这样便实现了懒加载

4,提取组件的 CSS 到单独到文件

当使用单文件组件时,组件内的 CSS 会以 <style> 标签的方式通过 JavaScript 动态注入。这有一些小小的运行时开销,将所有组件的 CSS 提取到同一个文件可以避免这个问题,也会让 CSS 更好地进行压缩和缓存

5,GZip压缩

在服务器端对文件进行压缩,在浏览器端对文件解压缩,可有效减少通信传输的数据量
项目开启Gzip

var compression = require('compression')
var app = express();
//尽量在其他中间件前使用compression
app.use(compression());
6,使用浏览器缓存
cache-control:用于控制HTTP缓存;
Expires:指定的时间内,同样的请求都可以使用缓存。
max-age :判断 max-age 时间,时间内请求直接从浏览器缓存中获取,时间外直接请求,可以消除Expires的限制
7,图片优化(建议使用png)

大小比较:

通常地,PNG ≈ JPG > GIF
透明性:PNG > GIF > JPG
色彩丰富程度:JPG > PNG >GIF
兼容程度:GIF ≈ JPG > PNG

8,使用服务端渲染的方式
9、按照页面或者组件分块懒加载
10,本地储存的使用
上一篇 下一篇

猜你喜欢

热点阅读