zoukankan      html  css  js  c++  java
  • 优化前端单页面应用性能指南

    ​对于单页面应用来说,最理想的情况是每个路由的页面性能都是最佳的。

    如果以此为目标,如何实现呢?

    全局性方案

    1. 减少文件大小,包括js,图片,css等;具体的方法可以采用压缩css、js文件;也可以压缩图片,当然还可以使用雪碧图
    2. 采用tree shaking方式进一步减少js文件大小
    3. 限制首屏加载资源的请求数或者采用多域名请求资源:以谷歌浏览器为例,默认同时请求资源的上线数是4个,可以通过多域名突破这个限制
    4. 通过webpack对文件进行拆包,然后利用浏览器可以同时请求的机制加快资源加载
    5. 采用CDN,加速资源请求
    6. 开启Gzip,进一步减小传输文件大小
    7. 采用预渲染或者服务端渲染的方案:JS驱动靠后
    8. webpack对第三方依赖采用按需引入

    针对性的优化措施

    1. 除了首屏其他采用异步路由的方式
    2. 对于组件来说如果引入了某个特定的js,可以利用createElement的方式动态引入js;理论上对于css也可以这种动态方案
    3. 对于图片来说采用懒加载的方式
    4. 局部组件也采用异步组件方案

    5. 采用keep-alive

    6. 采用函数式组件

    7. 可以采用http2.0 进行服务端主动推动

    利用缓存机制

    1. 利用server worker
    2. 利用max-age
    3. 利用if-modified-since和e-tag

    总结:开发同样是戴着镣铐跳舞,最好的性能一定是在浏览器能力范围之内的;浏览器对请求数有限定,对请求的资源大小有限制,对渲染的资源也有限制。最好的性能应该兼顾用户体验的情况下,请求的资源足够必要尽量小,渲染的内容足够必要也足够克制。资源要么一次请求要么分步请求。

    我站在山顶看风景!下面是我的家乡!
  • 相关阅读:
    s4-9 二层设备
    s4-9 二层设备
    s5-1 网络层引言
    LeetCode Factorial Trailing Zeroes (阶乘后缀零)
    UVA 658 It's not a Bug, it's a Feature! (最短路,经典)
    UVA 1151 Buy or Build (MST最小生成树,kruscal,变形)
    LeetCode Reverse Linked List (反置链表)
    LeetCode Contains Duplicate (判断重复元素)
    UVA 1395 Slim Span (最小生成树,MST,kruscal)
    割点,桥,边双连通分量,点双连通分量
  • 原文地址:https://www.cnblogs.com/zhensg123/p/14651109.html
Copyright © 2011-2022 走看看