前端优化的策略有很多,主要包括网络加载,页面渲染,CSS优化,JS执行优化,缓存,图片,协议几大类;
    网络请求是影响前端性能的一个主要因素,当然页面渲染也是一个非常重要的因素;因此我们应该针对这个两个方面都进行优化

    1. 减少HTTP请求次数

    建议尽可能的根据需要去合并静态资源图片、JavaScript代码和CSS文件,减少页面请求数,这样可以缩短页面首次访问的等待时间,另外也要尽量的避免重复资源,防止增加多余的请求

    1. 减少HTTP请求大小

    除了减少请求资源数,也要减少每个http请求的大小。比如减少没必要的图片,JS,CSS以及HTML等,对文件进行压缩优化,开启GZIP压缩传输内容,缩短网络传输等待延迟

    1. 将CSS和JS放到外部文件中,避免使用style和script标签引入

    在HTML文件中引入外部的资源可以有效利用浏览器的静态资源缓存。有时候在移动端对请求数比较在意的会为了减少请求把CSS和JS文件直接写到HTML里边,具体根据CSS和JS文件大小和业务场景来分析。如果CSS和JS文件内容较多,逻辑比较复杂,建议放到外部引入

    1. 避免页面中空的href和src

    当link标签的href属性为空,或者script、img、iframe标签的src属性为空的时候,浏览器在渲染的过程中还是会把href和src的空内容进行加载,直到加载失败。这样就阻塞了页面中其他资源的下载进程,并且最后加载的内容是无效的,因此要尽量避免。

    1. 为HTML指定Cache-Control或者Expires

    为HTML指定Cache-Control或者Expires可以将HTML内容缓存起来,避免频繁向服务器发送请求。在页面Cache-Control或Expires头部又消失,浏览器会直接从缓存读取内容,不向服务器发送请求

    1. 静态资源不同域名存放

    浏览器在同一时刻向同一个域名请求文件的并行下载数是有限的,因此可以理由多个域名的主机来存放不同的静态资源,增大页面加载时资源的并行下载数。

    1. 使用get请求

    POST请求会首先发送文件头,然后发送HTTP正文的数据。而使用GET只发送头部,所以在拉取数据时使用GET请求效率更高

    1. 消除阻塞页面的CSS和JS

    对于页面中加载时间过长的CSS或JS文件,需要进行合理的拆分或者延后加载,保证关键的资源能快速加载完成

    1. 按需加载
    2. 把CSS资源引用放到HTML文件顶部

    这样浏览器可以优先下载CSS并尽快完成页面渲染

    1. JavaScript文件引用放到HTML文件底部

    可以防止JavaScript的加载和解析执行对页面渲染造成阻塞。由于JavaScript资源默认是解析阻塞的,除非被标记为异步或者通过其他的方式异步加载,否则会阻塞HTMl DOM解析和CSS渲染过程

    1. 不要在HTML中直接缩放图片

    在HTML中直接缩放图片会导致页面内容的重排重绘,此时可能会使页面中的其他操作产生卡顿,因此要尽量减少在页面中直接进行图片缩放

    1. 减少DOM元素数量和深度

    HTML中标签元素约的,标签的层级越深,浏览器解析DOM并绘制到浏览器中说花的时间就越长。

    1. 尽量避免使用table、iframe等慢元素

    内容的渲染是讲table的DOM渲染树全部生成完并一次性绘制到页面上,所以在长表格渲染时很耗性能,应该尽量避免使用,可以考虑用ul代替。尽量使用异步的方式动态的加载iframe,因为iframe内资源的下载进程会阻塞父页面静态资源的下载以及HTMl DOM的解析

    1. 避免运行耗时的JavaScript

    长时间运行的JavaScript会阻塞浏览器构建DOM树、DOM渲染树、渲染页面。所以任何与页面初次渲染无关的逻辑功能都应该延迟加载执行,这和JavaScript资源的异步加载思路一致