“.NET研究”构建高性能ASP.NET站点之优化HTTP请求

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介:   本篇就开始细化页面的请求过程并且提出优化的方案.同时,在上篇文章中,不少朋友也提出了一些问题,在本篇中也对这些问题给出了回答!  本篇的议题如下:  HTTP请求的优化  HTTP请求的优化  在一个网页的请求过程中,其实整个页面的html结构(就是页面的那些html骨架)请求的时间是很短的,一般是占整个页面的请求时间的10%-20%.

  本篇就开始细化页面的请求过程并且提出优化的方案.同时,在上篇文章中,不少朋友也提出了一些问题,在本篇中也对这些问题给出了回答!

  本篇的议题如下:

  HTTP请求的优化

  HTTP请求的优化

  在一个网页的请求过程中,其实整个页面的html结构(就是页面的那些html骨架)请求的时间是很短的,一般是占整个页面的请求时间的10%-20%.在页面加载的其余的时间实际上就是在加载页面中的那些flash,图片,脚本的资源. 一直到所有的资源载入之后,整个页面才能完整的展现在我们面前.

  下面,我们就从一个页面开始讲述:

 1  <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
 2    上海徐汇企业网站设计与制作an style="color: #0000ff;">< html  xmlns ="http://www.w3.org/1999/xhtml" >
 3    < head >
 4       < title > 小洋,燕洋天 </ title >
 5 
 6       < script  type ="text/javascript"  src ="../demo.js" >
 7       </ script >
 8 
 9    </ head >
10    < body >
11       < div >
12           < img  src 上海企业网站制作"color: #0000ff;">="../images/1.gif"   />
13           < img  src ="../images/2.gif"   />
14           < img  src ="http://yanyangtian.cnblogs.com/image/3.gif"   />
15           < img  src ="http://yanyangtian.cnblogs.com/image/4.gif"   />
16           < img  src ="http://yanyangtian.cnblogs.com/image/5.gif"   />
17           < img  src ="http://yanyangtian.cnblogs.com/image/6.gif"   />
18           < img  src ="http://yanyangtian.cnblogs.com/image/7.gif"   />
19           < img  src ="http://yanyangtian.cnblogs.com/image/8.gif"   />
20           < img  src ="http://yanyangtian.cnblogs.com/image/7.gif"   />
21           < img  src ="http://yanyangtian.cnblogs.com/image/8.gif"   />
22       </ div >
23    </ body >
24    </ html >
25 

  如果我们向服务器请求这个页面,客户端的浏览器首先请求到的数据就是html骨架,:

 1  <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
 2  < html  xmlns ="http:/上海企业网站设计与制作/www.w3.org/1999/xhtml" >
 3  < head >
 4       < title > 小洋,燕洋天 </ title >
 5 
 6       < script  type ="text/javascript"  src ="../demo.js" >
 7       </ script >
 8 
 9  </ head >
10  < body >
11       < div >
12           < img  src ="../images/1.gif"   />
13           < img  src ="../images/2.gif"   />
14           < img  src ="http://yanyangtian.cnblogs.com/image/3.gif"   />
15           < img  src ="http://yanyangtian.cnblogs.com/image/4.gif"   />
16           < img  src ="http://yanyangtian.cnblogs.com/image/5.gif"   />
17           < img  src ="http://yanyangtian.cnblogs.com/image/6.gif"   />
18           < img  src ="http://yanyangtian.cnblogs.com/image/7.gif"   />
19           < img  src ="http://yanyangtian.cnblogs.com/image/8.gif"   />
20           < img  src ="http://yanyangtian.cnblogs.com/image/7.gif"   />
21           < img  src ="http://yanyangtian.cnblogs.com/image/8.gif"   /&gt上海闵行企业网站设计与制作;
22       </ div >
23  </ body >
24  </ html >
25 

  在此之前,首先来普及一下页面加载的小知识:

当页面的html骨架载入了之后,浏览器就开始解析页面中标签,从上到下开始解析.

首先是head标签的解析,如果发现在head中有要引用的js脚本,那么浏览器此时就开始请求脚本,此时整个页面的解析过程就停了下来,一直到js请求完毕.

之后页面接着向下解析,如解析body标签,如果在body中有img标签,那么浏览器就会请求img的src对应的资源,如果有多个img标签,那么浏览器就一个个的解析,解析不会像js那样等待的,如果发现img的url地址是同一个地址,那么浏览器就会充分的利用这个已经打开的tcp连接顺序的去一个个的请求图片,如果发现有的img的url地址不同,那么浏览器就另开tcp连接,发送http请求.

注意之前请求js的区别:请求需要js,浏览器会一直等待,不在解析下面的html标签

但是解析到img的时候,尽管此时需要加载图片,但是页面的解析过程还是会继续下去的,然后决定是否发送新的tcp连接加载资源.

  大家可能觉得这个之前的代码片段一样,确实代码是一样的,但是,在最开始的时候,发送到浏览器中的只是那些html的代码,任何的js脚本和图片还没有发送过来.

  当html代码到了浏览器中,那么浏览器就开始一步步的解析这些代码了,只要遇到了需要加载的资源,浏览器就向服务器发出http请求,请求所需的资源.

  整个页面的加载时间图如下:

  大家从图中可以看出:

  第一条线中分为一半黄色和一半蓝色,其实黄色的部分就代表了打开一个tcp连接花的时间,而后面的蓝色的部分就是请求整个html骨架文档的时间.可以看出,请求html骨架的时间是很短的.其余蓝色的线就表示了图片,脚本资源加载所花的时间.

  很显然,这样页面的整个加载时间就很长了.因为页面的加载几乎是顺序的载入,时间就是所有资源加载时间的总和.

  下面我们把上面的页面代码代为如下:

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< html  xmlns ="http://www.w3.org/1999/xhtml" >
< head >
    
< title > 小洋,燕洋天 </ title >

    
< script  type ="text/javascript"  src ="../demo.js" >
    
</ script >

</ head >
< body >
    
< div >
        
< img  src ="http://demo1.com/images/1.gif"   />
        
< img  src ="http://demo1.com/images/2.gif"   />
        
< img  src ="http://demo2.com/image/3.gif"   />
        
< img  src ="http://demo2.com/image/4.gif"   />
        
< img  src ="http://demo3.com/image/5.gif"   />
        
< img  src ="http://demo3/image/6.gif"   />
        
< img  src ="http://demo4.com/image/7.gif"   />
        
< img  src ="http://demo4.com/image/8.gif"   />
        
< img  src ="http://yanyangtian.cnblogs.com/image/7.gif"   />
        
< img  src ="http://yanyangtian.cnblogs.com/image/8.gif"   />
    
</ div >
</ body >
</ html >

  我们再来看看页面的加载时间图

  这就是所谓的”并行”载入了.

  比较一下两段代码的不同:其实就在img的src属性上面:

    第一段页面的代码:img的src属性都是指向一个域名的.

    第二段页面的代码:img的src属性指向了不同的域名

  这样做的结果是什么?

  请大家注意比较imgsrc的不同.

  解释之前,首先来看一个小的常识(在上篇文章中也提过):

当页面请求向服务器请求资源的时候,如果浏览器已经在客户端和服务器之前打开了一个tcp连接,而且请求的资源也在开了连接的服务器上,那么以后资源的请求就会充分的利用这个连接去获取资源. 这样也就是第一个时间图的由来.

如果请求的图片分别位于不同的服务器网站,或者那个请求的服务器网站有多个域名,那么因为浏览器就会为每一个域名去开一个tcp连接,发送http请求,这样,结果就是同时开了多tcp连接,这也是第二个时间图的由来.

  虽然说并行加载,确实使得页面的载入快了不少,但是也不是每一个图片或者其他的资源都去搞一个不同的域名,像之前的第二个并行载入图片的例子,也是让两个图片利用一个tcp连接.如果每个图片都去开一个连接,这样浏览器就开了很多个连接,也是很费资源的,而且浏览器还可能会”僵死”.而且有时还会严重的影响性能.

  所以,这是需要权衡的.

  除了上面的优化方式,还有其他的图片优化的加载方式.主要是通过减少http的请求达到优化

  大家都知道网站的一个menu菜单,有些菜单就是用图片作出来的.如

  如果上面的图片一个个载入,势必影响速度,如果开多和请求,有点得不偿失.而且图片也不是很大,那么就一次把整个menu需要的图片作为整个图片,一次加载,然后通过map的方式,控制点击图片的位置来达到导航的效果.

  这样一个问题就是:算出图片的坐标,不能点击了”主页”图片,然后却跳到了”帮助”页面了.

  本篇就讲述到这里,下篇讲述其他的资源文件的优化,希望 多多提出建议,争取把这个系列写好!

目录
相关文章
|
18天前
探寻HTTP代理IP访问站点失败的背后因素
随着互联网发展,使用HTTP动态代理IP的人越来越多。但有时使用代理后仍无法访问站点,原因包括:1. IP失效;2. 网络质量差;3. 浏览器或程序设置错误;4. 需尝试其他代理商;5. 联系网站管理员;6. 不符合目标站点规范。选择高质量的代理服务商可提升访问成功率。
36 2
|
2月前
|
数据采集 API 定位技术
合适HTTP代理优化效率的方法与好处
随着互联网发展,使用HTTP动态代理IP的需求日益增加。选择稳定、支持隧道代理、速度快、多样性高、支持HTTPS、API集成便捷、可更换性强、并发支持好且IP池大的代理IP,能有效提升爬虫效率和成功率。掌握这些实用技巧,有助于更好地利用代理IP进行数据采集。
65 10
|
3月前
|
负载均衡 监控 定位技术
HTTP代理网速变慢的原因及优化策略
随着互联网技术的发展,使用HTTP动态代理IP的人越来越多。本文介绍了HTTP代理网速变慢的六个常见原因及解决方法,包括代理服务器的地理位置、带宽、服务器负载、网络拥塞、配置问题和数据加密解密时间。通过识别和解决这些问题,可以有效提升HTTP代理的网速。
148 10
|
4月前
|
前端开发 UED 开发者
CSS Sprites和图标字体在网页图标加载优化中的应用。CSS Sprites通过合并多图标减少HTTP请求,提升加载速度
本文探讨了CSS Sprites和图标字体在网页图标加载优化中的应用。CSS Sprites通过合并多图标减少HTTP请求,提升加载速度;图标字体则以字体形式呈现图标,便于调整样式。文章分析了两者的优缺点及应用场景,并提供了应用技巧和注意事项,旨在帮助开发者提升页面性能,改善用户体验。
57 5
|
5月前
|
存储 缓存 监控
HTTP:强缓存优化实践
HTTP强缓存是提升网站性能的关键技术之一。通过精心设计缓存策略,不仅可以显著减少网络延迟,还能降低服务器负载,提升用户体验。实施上述最佳实践,结合持续的监控与调整,能够确保缓存机制高效且稳定地服务于网站性能优化目标。
85 3
|
7月前
|
缓存 运维 Serverless
函数计算产品使用问题之怎么优化HTTP Server的启动速度
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
7月前
|
安全 Nacos 数据安全/隐私保护
【技术干货】破解Nacos安全隐患:连接用户名与密码明文传输!掌握HTTPS、JWT与OAuth2.0加密秘籍,打造坚不可摧的微服务注册与配置中心!从原理到实践,全方位解析如何构建安全防护体系,让您从此告别数据泄露风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其连接用户名和密码的明文传输成为安全隐患。本文探讨加密策略提升安全性。首先介绍明文传输风险,随后对比三种加密方案:HTTPS简化数据保护;JWT令牌减少凭证传输,适配分布式环境;OAuth2.0增强安全,支持多授权模式。每种方案各有千秋,开发者需根据具体需求选择最佳实践,确保服务安全稳定运行。
649 0
|
10月前
|
数据采集 缓存 安全
http代理在seo优化中起到了什么作用呢?
HTTP代理在SEO优化中扮演多重角色:助力账号管理,实现精确关键词搜索,制定竞争策略,调整网站排名,以及安全爬取数据。注意合理合法使用代理IP,选择稳定快速的优质代理,并保持IP缓存的更新以优化网站排名。正确运用http代理IP可有效提升SEO效果。
66 0
http代理在seo优化中起到了什么作用呢?
|
10月前
|
Web App开发 存储 缓存
第八篇 提升网页性能:深入解析HTTP请求优化策略(三)
第八篇 提升网页性能:深入解析HTTP请求优化策略(三)
215 0
|
10月前
|
消息中间件 前端开发 JavaScript
第七篇 提升网页性能:深入解析HTTP请求优化策略(二)
第七篇 提升网页性能:深入解析HTTP请求优化策略(二)
259 1