欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

前端网站性能优化

程序员文章站 2022-05-14 13:28:06
...

此情无计可消除,才下眉头,又上心头。

前端QQ群: 981668406
在此附上我的QQ: 2489757828 有问题的话可以一同探讨
我的github: 李大玄
我的私人博客: 李大玄
我的npm开源库: 李大玄
我的简书: 李大玄
我的CSDN: 李大玄
我的掘金: 李大玄
哔哩哔哩: 李大玄

1. 首先减少http请求, 首先是图片请求
  1-1.将项目中的图片尽量使用为icon 
  1-2.图片地图<map><area/></map> 
  1-3.还有精灵图(css-sprites)  
  1-4.图片压缩 压缩后的图片大小会减少
  1-5.小于300k的图片进行压缩 减少http请求 在webpack中可以配置
  1-6.合并脚本和样式表 因为都是外联进来的 每一个文件都需要加载 合并之后减少请求量

2. 使用内容发布网络
  2-1.使用CDN, 将一些资源放在cdn进行引入,发布静态内容
  2-2.节省,将资源放在单独的服务器上

3.添加 Expires Header
  3-1.浏览器使用缓存来减少http请求的数量,减少http的响应大小
      如果为页面中的一个图片返回了这个头,浏览器在后续的页面浏览中会使用缓存的图片
  3-2.max-age  mod_expires 
    浏览器再次请求服务器时,浏览器会先判断max-age,如果到期则直接请求服务器,否则直接从缓存中取,
    mod_expires Apache模块,在使用ExpiresHeader 时能够像max_age那样设置日期,通过 Expires Default 指令来完成
    (如果在规定的时间内,需要发版,但是有缓存任务的时候,可以使用生成新连接的方法进行资源重新请求)
4.压缩组件
  4-1. Accept-Encoding: gzip, deflate (客户端列出来的方法中的一种进行压缩响应)
    很多浏览器不支持deflate,但是支持 gzip
    很多网站会压缩HTML文档,但是像脚本和样式表,XML和JSON 都值得压缩
    图片和PDF不应该压缩,因为都是压缩过的 压缩只会浪费CPU资源,还可能会增加文件大小
    gzip能将响应整体减少66%, deflate能减少60%
  4-2. 配置
    配置gzip时使用的模块取决于Apache的版本 
      Accept1.3使用mod_gzip
      Accept2.x使用mod_deflate 
  4-3.代理缓存
    Vary: Accept-Encoding
  4-4.边缘情形
    服务器和客户端的压缩对等性看似简单,但必须正确才行。无论是客户端还是服务器发生错误,页面都会被破坏,
    错误不会经常发生,但是需要考虑。

5.将样式表放在顶部
  5-1.将DHTML 特征的样式表放在文档顶部,加载更快, 反之放在后面加载更慢
  5-2.逐步呈现
    将样式表放在文档底部会导致浏览器中阻止内容逐步呈现,为避免当样式变化时重绘页面中的元素,
    浏览器会阻塞内容逐步呈现.
  5-3.sleep.cgi
  5-4.将css放在顶部
    为了避免页面白屏,将样式表放在顶部,这样叫做(css at the top),不管页面是如何加载的,窗口新开,重新加载,页面都会逐步呈现
    一个style模块可以包含多个@import 但是@import必须放在所有其他规则之前
    @import有可能导致白屏,即便把@import放在文档的head标签中也是如此
  5-5.无样式内容的闪烁
    样式表在页面中的位置并不影响下载时间,但是会影响页面的呈现

6.将脚本放在底部 可以提高下载的并行度
  6-1.脚本带来的问题
  6-2.并行下载
  6-3.脚本阻塞下载
  6-4.最差情况: 将脚本放在顶部
  6-5.最佳情况: 将脚本放在底部

7.避免css 表达式  CSS表达式是动态设置css属性的一种强大 并且危险的方式.
  7-1.一次性表达式 防抖节流
  7-2.事件处理
  7-3.没有深入了解底层影响的情况下使用css表达式是很危险的

8.使用外部JavaScript 和 css
  8-1.纯粹而言,在HTML文档中写js与css 加载更快,因为减少了http请求 30% ~ 50%
  8-2.组件重用
    如过网站每个页面使用了想通的js和css,那么使用外部文件可以提高这些组件重用率.Expires
    如果重用性底,还是内联更有意义
  8-3.典型的对比结果
    
9.减少DNS查找
  Internet是通过IP地址来查找服务器的,犹豫IP地址很难记,太长使用包含主机名的URL来取代她
  dns也是开销,通常浏览器查找一个给定的主机名的IP地址要花费20~120毫秒
  9-1.DNS缓存和TTL
    DNS查找可以被缓存起来以提高性能

10. 精简JavaScript
  10-1.混淆是可以应用在源代码上的另一种优化方式.和精简一样,他会移除注释和空白,同事他还会改写代码.
  也就是压缩js
  10-2.精简css #000000 => #000  0代替0px

11. 避免重定向
  每一个请求都是要消费时间的

12. 避免重复脚本
  12-1.在页面冲多次包含相同的脚本回事页面变慢
  12-2.在Internet Explorer中,如果脚本没有被缓存,或在重新加载页面时,会产生额外的HTTP请求
  12-3.在Firefox 和 Internet Explorer中,脚本会被多次请求

13. 使用ETag 没看

14. 使ajax 可缓存