前端性能优化(1)

2019-04-03  本文已影响0人  一包

参考掘金小册https://juejin.im/book/5bdc715fe51d454e755f75ef/section/5bdc7198518825171726cfce

网络相关

DNS 预解析

<link rel="dns-prefetch" href="//yuchengkai.cn" />

缓存

使用 HTTP / 2.0

预加载

<link rel="preload" href="http://example.com" />

预渲染

<link rel="prerender" href="http://example.com" />

优化渲染过程

懒执行

懒加载

文件优化

图片优化

防抖,节流

防抖

实现

function debounce(method,delay){
    let timer = null;
    return function(...args){
        //es5 args = arguments;
        // 这里返回的函数是每次用户实际调用的防抖函数
      // 如果已经设定过定时器了就清空上一次的定时器
      // 开始一个新的定时器,延迟执行用户传入的方法
        if(timer) clearTimeout(timer);
        timer=setTimeout(()=>{
            method.apply(this,args)
        },delay);
    }
}

节流

实现

function throttle(func,interval){
    let timer=null;
    let startTime = new Date();
    
    return function(...args){
       
        if(timer) clearTimeout(timer);
        
        let curtime = new Date();
        if(curtime-startTime<interval){
            //小于规定时间间隔,用settimout延迟到点后执行
            timer=setTimeout(()=>{
                func.apply(this,args);
            },curtime-startTime)
        }else{
            //大于时间间隔,重新计时并执行函数
            startTime = curtime;
            func.apply(this,args);
        }
    }
}

提高页面加载速度

减少HTTP请求

1. 使用雪碧图 CSS Sprites
2. 字体图标
3. 合并脚本,样式表

使用CDN

提高浏览器并发连接数(有http2不适合了)
给静态资源单独域名
上一篇 下一篇

猜你喜欢

热点阅读