美文网首页程序员
网站性能优化

网站性能优化

作者: Nerrol | 来源:发表于2017-10-27 20:47 被阅读0次

    1、资源压缩合并

    (1)图片:雪碧图

    (2)JS、CSS合并:利用项目构建工具webpack、grunt、gulp等。


    2、加快渲染

    CSS前置

    3、减少DOM操作

    (1)将DOM节点放入局部变量

    (2)内存中操作元素,使用文档片段

    document.createDocumentFragment()

    PS:这样做的优点是只会触发一次回流

    (3)一次性DOM节点生成

    通过innerHTML属性一次性生成节点,使用字符串拼接的方式,先生成相应的HTML字符串,再一次性写入innerHTML中。

    (4)通过类来修改样式

    (5) 使用事件代理


    4、减少HTTP请求

    (1)keep-Alive模式(持久连接)

    每个请求,应答客户和服务器都要新建一个连接,完成后立刻断开,持久连接模式使客户端到浏览器的连接持续有效,后续请求时避免了建立或者重新建立连接。

    PS:HTTP1.1版本支持

    (2)管线化

    在持久连接的前提下,通过将请求一次性打包发出,有效减少HTTP请求。

    PS:a)只有GET和HEAD请求可以实现管线化,POST有一定的限制;

            b)初次进行请求时不应该启动管线机制,因为服务器不一定支持HTTP1.1版本。


    5、非核心代码异步加载

    (1)<script>标签,动态脚本加载

    (2)<script defer>

    异步加载,后续文档元素和脚本文件同时加载,js脚本的执行要等到文档所有元素加载完后执行

    PS:IE只支持defer

    (3)<script async>

    异步加载,后续文档元素和脚本文件同时加载,加载完后自动执行js脚本。


    6、利用浏览器缓存

    (1)强缓存

    不请求服务器直接读取文件。

    HTTP 1.0 采用Expires头指定资源过期时间;

    HTTP 1.1 采用Cache-Control指定资源被缓存多久;

    (2)协商缓存

    向服务器发起请求,如果资源并未更新,response响应码为304,随后从浏览器缓存中下载该文件。

    HTTP 1.0 采用Last-ModifiedIf-Modified-Since来指定资源过期时间;

    HTTP 1.1 采用E-TagIf-None-Match来确定该资源是否过期;


    7、使用CDN加速资源

    在页面第一次打开时缓存没有作用,使用CDN可以加速资源。


    8、DNS预解析

    (1)页面中所有a标签在浏览器中默认打开dns,如果页面为https,很多浏览器默认关闭dns,使用标签强制打开dns:

    <meta http-equiv="x-dns-prefetch" href=" ">

    (2)预解析

    <link rel="dns-prefetch" href=" ">

    相关文章

      网友评论

        本文标题:网站性能优化

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