当前位置:职场发展 > Web 性能优化:什么?为什么?如何?

Web 性能优化:什么?为什么?如何?

  • 发布:2023-09-29 12:17

我们为什么要提高网络性能? Web性能对用户体验有着极其重要的影响。根据著名的“2-5-8”原则: 当用户在2秒内得到响应时,他们会感觉系统响应速度非常快。 当用户在2-5秒内得到响应时,就会感觉系统的响应速度还可以。 当用户在5-8秒内得到响应时,会感觉系统的响应很慢,但仍然可以接受。 当用户8秒后没有得到响应时,就会感觉系统很糟糕,甚至系统已经挂掉了;他们必须打开竞争对手的网站或重新发起第二个请求。 一切都需要研究,通过科学研究我们可以找到事物发展的规律。在这里我们要感谢雅虎工程师总结了14条前端优化规则,让我们能够站在巨人的肩膀上。 《高性能网站建设》本书的14条优化原则可以概括为以下几个方面的优化: 减少 HTTP 请求 内页优化 启用缓存 减少下载 优化网络连接 为什么减少 HTTP 请求可以提高 Web 性能? 要回答这个问题,我们需要了解浏览器向服务器发送http请求获取数据时经历了哪些流程: 打开一个链接(tcp/ip三路握手过程)->发送请求->等待(网络延迟和服务器处理时间)->下载数据 我们看一下百度首页http请求各个阶段所花费的时间。上图不同的颜色代表了下图中的不同阶段。 可以看到,除了图片之外,其他http请求事件大部分都花费在连接建立和等待阶段。 http 协议建立在 TIC/IP 协议之上。在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手的方式建立连接。简单来说,三次握手是一个身份确认过程:  (<***握手:主机A发送位码syn=1,随机生成一个seq number=1234567的数据包给服务器,主机B知道SYN=1,A请求建立连接;<) <晴儿:你是萧哥哥吗?我是晴儿 (<第二次握手:主机B收到请求后,需要确认上线信息,发送ack number=(主机A的seq+1),syn=1,ack=1,随机生成一个seq=7654321的数据包给A <) 小健:这家伙是谁?他带着长笛和剑环游世界。他的下一句话是什么? (第三次握手:主机A收到后,检查ack号是否正确,即第一次发送的seq号+1,以及位码ack是否为1。如果正确,主机A将再发送一个ack号=(主机B的seq+1),ack=1,主机B收到后确认seq值,ack=1,连接建立成功。) 青儿:这首诗。 。 。你真是萧兄,一笑一剑走遍天下,一千年爱恨情仇。 。 。 小剑:晴儿,你真是晴儿。 。 。 。 (按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按。 ,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按。 ,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按,按。 ,啪,啪,啪。 言归正传,这个过程也需要时间。我在百度首页找到了一个极端的例子: 等待时间通常大于内容下载时间。这是一个极端的例子: 由此我们可以得出,http请求的大部分时间都花在了建立连接和等待上。优化方法是减少http请求。 #p# 如何提高网络性能? 1.减少HTTP请求 一般来说,减少http请求有两种方法:减少图片请求和减少脚本文件和样式表请求。 通常有两种减少图像的方法:css sprites、内联图像和 IconFont。 CSS Sprites:将多个图像合并为一个图像。使用CSS的background-position属性将html元素的背景图像放置在精灵图像中的所需位置。使用此技术的另一个优点是,它减少了下载大小,并且合并的图像比分离的图像小,因为它减少了图像本身的开销(颜色表、格式信息等)。在实际项目中,css sprites是一个体力活,因为在开发过程中需要维护这张大图(添加和减少图片)。张新旭的文章<有关于如何管理精灵图片的介绍,可以参考<(这里)<。如果您需要为页面上的背景、链接和导航栏提供大量图像,CSS 精灵绝对是​​一个出色的解决方案(干净的标签、更少的图像、更短的响应时间)。 内联图像:使用 data:URL 模式可以将图像包含在页面中,无需任何其他请求。缺点是IE8以下的浏览器不支持这种方法,而且IE8对数据大小有限制,只能支持23kb以内的数据。较小的图像可以直接内嵌到网页中,但是将大图像内嵌到页面中会导致页面变大。聪明的方法是使用css将内联图像作为背景,并将其放置在外部样式表中,这意味着可以将数据缓存在样式表内部。尽管使用外部样式表会增加 http 请求,但浏览器可以缓存该样式,从而为您带来额外的好处。还有一点需要注意:base64是有损压缩。 IconFont:

相关文章