深入探讨
Web
Page
的性能提升
【
摘要
】
Web
性能在
Web
开发中占有非常重要的地位,一个快速的网页对于提升用户体验,提高用户黏性,具有非常重要的意义。要开发出高性能的
Web
page,
需要深入了解
Web
端的原理
,
在本文中作者深入探讨了
Web
Page
的性能优化技巧,本文不仅介绍了技巧,并深入了研究了使用这些技巧的原因以及机理,本文凝结互联网上众多高手的智慧和劳动
,
尤其是
Yahoo
团队在
Web
page
端所做的理论分析
,
给作者以非常大的启示
,
本文有部分转载,其中也加入了大量本人的理解和实例,本文对于
Web
端性能提升具有非常重大的参考意义,是不可多得的好材料。本文可以广泛地推介给
Web
端开发人员,易于理解,并能够加强基础,一个快速如飞的网页,对开发人员来说,是非常有成就感的一件事情
,
本文首先简单介绍了
Web
基础,然后列举了多种方法进行
Web
性能优化的方法,最后列举实例,通过这些优化方法,很好地完成了
Innova
Center
的性能优化。阅读完本文,并能够深刻理解,你会成为
Web
性能方面的专家。
【主要内容】
深入探讨Web
Page
的性能提升
.
1
1 Web端性能基础
.
4
1.1 Web端性能的重要性
.
4
1.1.1 跟踪Web
页面的性能
.
4
1.1.2 Web Page的时间消耗分析
.
5
1.1.3 性能的黄金法则
.
5
1.2 HTTP基础
.
6
1.2.1
压缩
.
6
1.2.2
Keep-Alive
7
2 常用的Web
Page
优化技巧以及原理
.
7
2.1 减少HTTP
请求
.
7
实例1:
在InnovaCenter
的主页采用CSS Sprites
进行图片合并
.
9
2 .2 添加Expires
头
.
12
实例
2
:
INNOVACenter
添加
Expire
头的请求和没有添加
Expires
头请求的差别
.
13
2 .3 压缩组件
.
14
实例3
INNOVA
Center
采用
GZIP
压缩完成对
HTML
文档,
CSS
,
JavaScript
的压缩
.
15
2.4 将CSS
放在顶部
.
16
2.5 将JS
文件放在Page
的底部
.
17
2.5.1 脚本带来的问题
.
17
2.5.2 并行下载
.
17
2.5.3 脚本阻塞下载
.
19
2.6
使用外部的JavaScript
和CSS
20
2.7
减少
DNS
查询
.
21
2.8
尽早
flush
缓冲区
.
22
2.9
在集群环境中避免使用
ETag
23
2.9.1 ETag是什么
?
.
23
2.9.2 Expires头
.
23
2.9.3条件Get
请求
.
24
2.9.4
服务如何检测缓存中的组件
.
24
2.9.5 ETag
带来的问题
.
25
2.10
使用
get
方法进行
AJAX
请求
.
25
2.11
延迟加载组件
.
26
2.12
预加载组件
.
26
2.13
减少
DOM
元素的数量
.
28
2.14
跨域分割组件
.
28
2.15
尽量减少
Iframe
的数量
.
29
2.16
在页面尽量避免组件
404
的响应
.
29
2.17
尽量减少
Cookie
的大小
.
30
2.18
尽量减少
DOM
的访问
.
30
3.
总结
.
30
在
Web
应用程序中,通常的后端优化包括
-
数据库优化设计,和内存管理。但实际上,只有
10%-20%
的最终用户响应时间是花在从
Web
服务器获取
HTML
文档并传达到浏览器中。如果希望能够有效地减少页面的响应时间,就必须关注剩余
80%-90%
的最终用户体验。
这
80%-90%
的时间花在哪里了?如何减少它?
1.1.1
跟踪
Web
页面的性能
为了知道能够改进哪些地方,我们需要了解用户的时间都花在等待哪些东西,以
公司首页
为例,
IE
浏览器的
HTTPWatch
工具来查看,下载
INNOVA Center
首页时所产生的流量。每个横条都是一个
HTTP
请求
,
第一个横条
,
标有
HTML,
是对
HTML
文档的初始请求
.
浏览器解析
HTML
并开始下载页面中的组件。这里的页面中的组件,指的是页面的
img
元素,
flash
,
JavaScript
文件和
CSS
文件。由于第一次加载页面时,浏览器中的缓存是空的,因此所有的组件,都需要从
WEB
服务器中下载。
HTML
文档只占总响应的
5%
。用户需要花费其实的
95%
的时间中的大部分来等待组件的下载。还有一小部分时间花在解析
HTML
、脚本和
CSS
上面
:
1.1.2
Web Page
的时间消耗分析
如上图所示:整个
INNOVA Center
的主页耗时
605ms
,从发送请求到从服务器端响应,组装
HTML
到下载
HTML
文档的时间只有
61ms
,其余的时间都花在下载
js
,
CSS
和图片上,还有少量的时间花在了
js
的解析上。
总的来说,一个页面从用户请求开始,到完整的页面呈现在用户面前,包含以下几个过程:
1.DNS
查找,寻址,找到目标服务器的
IP
2.
建立
HTTP
连接
3.
发送请求
4.
服务器响应,组装
HTML
5.
浏览器下载服务器端响应组装的
HTML
文档
6.
浏览器下载组件(
js
,
css
,
flash
和图片等)
通过刚才举出的实例,可以看出大部分的时间都花在了第
6
步:下载
js
,图片,和
css
上面了。
1.1.3
性能的黄金法则
从一个页面请求发送给服务器到服务器响应组装
HTML
,到客户端下载
HTML
所花的时间大概占用所有时间的
10%-20%
的时间,这个现象不只是出现在
Yahoo
!,
Google
的主页上。而且这一统计数据适用于绝大多数网站。下面的列表得到的美国前十个网站,除了
AOL
之外,这些网站都名列美国的前十名。
Site
|
无缓存
|
完整缓存
|
AOL
|
6%
|
14%
|
Amazon
|
18%
|
14%
|
CNN
|
19%
|
8%
|
eBay
|
2%
|
8%
|
Google
|
14%
|
36%
|
MSN
|
3%
|
5%
|
MySpace
|
4%
|
14%
|
Wikipedia
|
20%
|
12%
|
Yahoo!
|
5%
|
12%
|
YouTube
|
3%
|
5%
|
所有的这些网站在获取
HTML
文档是,花费的时间都不到总响应时间的
20%
。在进行网站的性能优化时,关键是剖析当前的性能,找到哪里可以获得最大的改进。很明显,在这种情况下我们应该关注前端性能:
1.
首先,关注前端性能可以很好地提高整体性能。
如果我们可以将后端响应时间缩短一半,整体响应时间确只能
5%-10%
。而如果关注前端性能,同样是将其响应时间减少一半,则整体响应时间可以减少
40%-50%.
2.
其次,改进前端通常只需要较少的时间和资源。
而改动后端,很可能需要修改程序的架构,添加或者改动硬件,对数据库进行分布化等。
3.
前端性能调整已经被证明是可行的。
Yahoo
!有超过
50
个团队使用了这里介绍的性能优化方案并降低了最终用户的响应时间,降低幅度通常为
25%
或更高。一般来说,只需要遵循这些优化方案就能节省
25%
或更多的时间。
根据上面的三点理由,性能黄金法则
可以总结如下:
只有
10%~20%
的最终用户响应时间花在了下载
HTML
文档上。其余的
80%~90%
时间花在了下载页面中的所有组件上。
HTTP
是一种客户端
/
服务器协议,由请求和响应组成。浏览器向一个特定的
URL
发送
HTTP
请求,
URL
对应的宿主服务器发回
HTTP
响应。和很多的
Internet
服务一样,该协议使用简单的纯文本形式。请求的类型有
GET,POST,HEAD,PUT,DELETE,OPTIONS
和
TRACE
。
HTTP
协议从开始
1.0
版本到现在最常用的
1.1
在性能上得到了很大的改进。下面列出几个
HTTP
的最基本知识点,这对于理解
Web
Page
的优化有很大的好处:
1.2.1
压缩
目前主流的浏览器和服务器都支持压缩,也就是说
HTTP
发送到服务端的请求,服务器响应给浏览器的
HTML
文本,由服务器端先压缩好,再传输给客户端,客户端再进行解压缩。
这样
HTML
文本在网络传输过程中,大大减少了其大小,目前如
Apache
服务器,可以支持
HTML
文本的压缩率可达到
80%
,这个基本知识点为
WEB Page
的优化提供了一个最基本的优化点。
1.2.2
Keep-Alive
HTTP
协议构建在
TCP
之上。在
HTTP
的早期实现中,每个
HTTP
都打开一个
Socket
连接。这样做效率很低,因为一个
Web
页面中的
HTTP
请求都指向同一个服务器。例如,很多为
Web
页面中的图片发起的请求都指向同一个图片服务器。持久连接的引入解决了多对以请求服务器导致的
Socket
连接低效性的问题。它是浏览器可以在一个单独的连接上进行请求。浏览器服务器使用
Connection
头来指出对
Keep
-
Alive
的支持。在服务器的响应中
Connection
头看起来是一样的。
浏览器或服务器可以通过发送一个
Connection
:
close
头来关系连接。从技术上讲:
Connection
:
keep
-
alive
并不是
HTTP1
.1
中必需的,但是很多浏览器和服务器都包含它。
HTTP1
.1
中定义的管到可以在一个单独的
socket
上发送多个请求而无须等待响应。管道的性能要优于持久连接。但不幸的是
IE
都不支持管道,而
Firefox
自从版本
2
开始默认也是关闭该功能的。在管道被广泛应用之前,
Keep-Alive
依然是浏览器和服务器使用
HTTP
的
socket
连接最有效的方式。这对于
HTTPS
来说甚至更重要,因为建立新的安全
socket
连接要消耗更多的时间。
分享到:
相关推荐
本篇内容将深入探讨Web前端性能优化的思路与学习方法,结合WebQQ、QQ互联、QQ商家等大型项目研发中的实践经验,提供一套系统的优化框架。 首先,前端性能优化可以从以下几个层面展开: 1. 网络层面优化:优化网络...
本篇指南将深入探讨Web前端性能优化的相关知识点,帮助您构建一个快速、高效、响应迅速的网站。 首先,我们要认识到性能优化的重要性。网站加载时间的长短将直接影响用户是否愿意继续浏览。根据多项研究显示,用户...
首先,书中可能会介绍Web性能的基础概念,如页面加载时间、首字节时间(TTFB)、首屏渲染时间和完全加载时间等。理解这些指标有助于开发者识别性能瓶颈,并设定优化目标。 其次,网络协议优化是提升性能的关键一环...
"WEB性能优化实践分析"的主题旨在探讨和分享一系列实用的优化策略和技术,旨在遵循"web优化黄金规则",确保网页快速加载,减少用户等待时间,提高网站的可访问性和可用性。 一、网页性能的重要性 网页性能优化不仅...
【描述】: 本文探讨了如何通过基于Nginx的负载均衡算法优化Web前端性能,以减轻后台服务器的压力,提高处理效率。同时,该研究提出了一个适用于多终端的组件化开发和打包部署的开发模型,并通过实际的企业级应用开发...
在IT行业的领域内,"web前端性能测试"是一项至关重要的技术环节,它直接影响着用户的体验质量和网站的整体性能表现。从给定的文件信息来看,我们可以深入探讨以下几点关键知识点: ### 1. 前端性能测试的目的 前端...
本资源"web-page-random-background.rar_page"正是针对这一功能的实现示例,下面将详细探讨其背后的原理和技术。 首先,我们需要了解HTML、CSS和JavaScript这三种关键技术在创建随机背景中的作用。HTML是页面的基础...
《alone-web-page源码解析与程序设计探讨》 在当今数字化时代,网页设计与开发是IT行业不可或缺的一部分。"alone-web-page"项目源码的公开,为初学者和专业人士提供了一个深入了解网页设计与功能实现的宝贵资源。这...
标题中的“探讨Web优化”指的是在互联网开发领域中,如何通过各种技术和策略提高网站或Web应用的性能、用户体验和加载速度。这是一项至关重要的工作,因为网页加载速度直接影响到用户的满意度和搜索引擎排名。Web...
《Tomcat与Java Web开发技术详解》是由孙卫琴编著的第二版书籍,该书深入探讨了在Java Web开发中使用Tomcat服务器的核心技术和实践方法。Tomcat是一款开源、轻量级的Java Servlet容器,它是Java EE Web应用程序部署...
本文将深入探讨ASP.NET性能优化的几个核心方面,包括数据库连接池管理、参数化查询的运用、数据读取方式的选择以及服务器控件的状态管理。 #### 数据库连接池管理 数据库连接是Web应用中的关键资源,不恰当的管理...
《高效前端:Web高效编程与优化实践》这本书深入探讨了Web前端开发中的高效编程和优化技术,涵盖了从基础概念到高级策略的广泛内容。在Web开发领域,前端性能的优化对于提升用户体验、降低服务器压力以及提高网站...
本主题将深入探讨如何通过多种策略提升ASP.NET应用的性能,确保用户获得最佳的在线体验。 首先,了解性能优化的重要性至关重要。在Web环境中,响应时间直接影响用户体验,因此减少页面加载时间、降低服务器负载以及...
单页面Web应用(Single Page Application, SPA)在现代互联网中广泛应用,因其提供流畅的用户体验而备受青睐。然而,SPA在性能优化方面面临诸多挑战,尤其是首屏加载速度和搜索引擎优化(SEO)。本讲座将探讨如何...
下面我们将深入探讨Web自动化测试的基础知识。 【描述】:“web-automation-basics-源码.rar”的描述简洁明了,暗示着这个压缩包可能包含了用于教学或实践的Web自动化测试代码。这可能包括使用流行的自动化框架(如...
《.Net Web经典优化》一文探讨了针对网站性能提升和代码优化的策略,适合初学者学习。本文主要关注以下几个方面: 1. **数据库操作优化**: - 使用`Page.IsPostBack`属性来避免对往返过程执行不必要的处理。在`...
本文将深入探讨“m-mall-master.zip”压缩包中的微信小程序商城源码,旨在帮助初学者理解其核心概念和开发流程,以便快速上手构建自己的小程序商城。 一、微信小程序基础架构 微信小程序的开发基于一套自有的框架...
在这个主题中,我们将深入探讨JSP的核心概念、Web应用程序的开发以及这两者如何协同工作来构建动态网站。 【描述】由于描述仅为“JSP&WEB; \06-09”,没有提供具体信息,我们只能基于标题进行推测。这可能涵盖了从...
### Web Performance ...总之,《Web Performance Daybook Volume 2》是一本全面、深入探讨Web性能优化的专业书籍,它不仅能够帮助开发者理解Web性能的基本原理,还能提供实用的工具和技术,以提高网站的速度和效率。