构建高性能ASP.NET站点之一 剖析页面的处理过程(前端),徐汇区网站设计

news/2024/5/13 18:50:00/文章来源:https://blog.csdn.net/weixin_33698043/article/details/94552172

导读:作者燕洋天写了一系列关于ASP.NET的文章。在对ASP.NET网站进行优化的时候,往往不是只是懂得ASP.NET就足够了的。在优化的过程中,一般先是找出问题可能存在的地方,然后证明找出的问题就是要解决的问题,确认之后,在进行一些措施。系列文章在结构上的安排是这样的:先讲述前端的调优,我会在文章的标题后面标上前端,如果是后台代码的调优,我会在标题上标上后端,如果是数据库设计的调优,我会在标题上标上数据库,希望大家多多提建议。

剖析页面的解析过程

页面的解析过程,这里说的过程不是我们常说的ASP.NET页面的生命周期的过程,而且浏览器请求一个页面,然后浏览器呈现页面的过程。

在本篇的文章中,我会先阐述页面的解析过程,显示从整体上阐述,然后在每一个点上提出优化的方法。先整体,后局部。

当浏览器在请求一个Web页面是从URL开始的。下面就是过程描述:

1. 输入URL地址或者点击URL的一个链接。

2. 浏览器根据URL地址,结合DNS,解析出URL对应的IP地址。

3. 发送HTTP请求。

4. 开始连接请求的服务器并且请求相关的内容(至于请求时怎么被处理的,我们这里暂时不讨论,只是后面的文章要讨论的问题)。

5. 浏览器解析从服务器端返回的内容,并且把页面显现出来,同时也继续进行其他的请求。

上面基本上就是一个页面被请求到现实的过程。下面我们就开始剖析这个过程。

当输入URL之后,浏览器就要知道这个URL对应的IP是什么,只有知道了IP地址,浏览器才能准备的把请求发送到指定的服务器的具体IP和端口号上面。

浏览器的DNS解析器负责把URL解析为正确的IP地址。这个解析的工作是要花时间的,而且这个解析的时间段内,浏览器不是能从服务器那里下载到任何的东西的。但是这个解析的过程是可以优化的。试想,如果每次浏览器每次请求一个URL都需要解析,那么每次的请求都有一点的时间消耗,可能这个时间消耗很短,但是性能的提升就是一点点的“调”出来的。如果把对应URLIP地址缓存起来,那么当再次请求相同的URL时,浏览器就不用去解析,而是直接读取缓存,这样势必会快一点。

其实浏览器和操纵系统是提供了这样的支持的。

当获得了IP地址之后,那么浏览器就向服务器发送HTTP的请求,下面我们就稍微看下这个发送请求是怎么样被发送的:

1.    浏览器通过发送一个TCP的包,要求服务器打开连接。

2.    服务器也通过发送一个包来应答客户端的浏览器,告诉浏览器连接开了。

3.    浏览器发送一个HTTPGET请求,这个请求包含了很多的东西了,例如我们常见的cookie和其他的head头信息。

这样,一个请求就算是发过去了。

请求发送去之后,之后就是服务器的事情了,服务器端的程序,例如,浏览器清楚的文件是一个ASP.NET的页面,那么服务器端就把请求通过IIS交给ASP.NET 运行时,最后进行一系列的活动之后,把最后的结果,当然,一般是以是以html的形式发送到客户端。

其实首先到达浏览器的就是html的那些文档,所谓的html的文档,就是纯粹的html代码,不包含什么图片,脚本,css等的。也就是页面的html结构。因为此时返回的只是页面的html结构。这个html文档的发送到浏览器的时间是很短的,一般是占整个响应时间的10%左右。

这样之后,那么页面的基本的骨架就在浏览器中了,下一步就是浏览器解析页面的过程,也就是一步步从上到下的解析html的骨架了。

如果此时在html文档中,遇到了img标签,那么浏览器就会发送HTTP请求到这个img响应的URL地址去获取图片,然后呈现出来。如果在html文档中有很多的图片,flash,那么浏览器就会一个个的请求,然后呈现。

到这里,大家也许感觉到这种方式有点慢了。确实这个图片等资源文件的请求的部分也是可以优化的。暂不说别的,如果每个图片都要请求,那么就要进行之前说的那些步骤:解析url,打开tcp连接等等。开连接也是要消耗资源的,就像我们在进行数据库访问一样,我们也是尽可能的少开数据库连接,多用连接池中的连接。道理一样,tcp连接也是可以重用的。但是重用也有问题:如果两个图片它们的url地址如下:

代码

<img src="q1.gif" height="16" width="16" />

<img src="q2.gif" height="16" width="16" />

<img src="q3.gif" height="16" width="16" />

<img src="q4.gif" height="16" width="16" />

<img src="q5.gif" height="16" width="16" />

<img src="q6.gif" height="16" width="16" />

<img src="q7.gif" height="16" width="16" />

<img src="q8.gif" height="16" width="16" />

<img src="q9.gif" height="16" width="16" />

<img src="q10.gif" height="16" width="16" />

请求这些图片的时间消耗如下图:

大家首先看到最上面的黄线的部分,这个黄线就代表了浏览器打开连接,黄线的后半部分为蓝色,就表示浏览器请求到了html的文档。

最上面的第二条蓝线就表示第一个图片已经请求到了,此时请求这个图片使用还是之前的一个tcp的连接。

大家在看到第三条线,前部分是黄色的,表示请求第二个图片的时候又开了一个tcp的连接,这条线的后半部分为蓝色,表示图片已经请求到了。

剩下的要请求的一些图片都使用上一个tcp连接。

确实,tcp的连接时充分的被使用了,但是图片下载的速度确实慢了,从图中看出,图片是一个个的顺序的下载下来的。整个页面的响应时间可想而知。

如果采用下一种方式,如:

可以看出连接时多了,但是图片的几乎都是并行下载下来的,相比而言就快多了。

其实这就是一个权衡的问题了。

实际上浏览器也是内置了以一些优化方式的,例如缓存图片,脚本等。或者采用并行下载图片的方式,谈到并行下载,就如上图所看到的,势必会消耗更多的连接资源。

原文链接:http://www.cnblogs.com/yanyangtian/archive/2010/07/22/1782670.html

转载于:https://www.cnblogs.com/waw/archive/2011/09/15/2177957.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_749165.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

先睹为快:Visual Studio 11测试版已于2.29在微软官方网站正式发布

在2011的下半年&#xff0c;Visual Studio 11就已经呼之欲出&#xff0c;在2012年的2月29日&#xff0c;微软官方网站正式发布了VS11的测试版。VS11中使用了Framework4.5&#xff0c;与Framework4.0相比&#xff0c;没有发生太大的改变&#xff0c;只是对功能进行了优化。 下载…

IIS建立网站后显示“403.1禁止访问”的解决方法

建立网站后&#xff0c;显示如下&#xff1a; 这是由于没有脚本访问权限导致的&#xff0c;解决方法&#xff1a; 这样设置后就可以了&#xff0c;呵呵 本文转自博客园张占岭&#xff08;仓储大叔&#xff09;的博客&#xff0c;原文链接&#xff1a;IIS建立网站后显示“403.1禁…

25个绿色网站设计灵感

绿色的颜色即我们通常与自然关联的&#xff0c;并且它是可见光谱的3原色之一。三基色红&#xff0c;绿&#xff0c;蓝。我已经共享的红色网站的集合&#xff0c;在这个集合中寻找灵感&#xff0c;你会发现25个绿色网站。 绿色也与环境&#xff0c;这些天我们都将努力挽救环境和…

转载-支持中英文多语言浏览的MVC网站实例

思路大概是这样的&#xff0c;将翻译成不同语言的词句以xml键值对的格式分别存在不同文件夹下&#xff0c;扩展MVC HtmlHelper, 在扩展方法里根据用户当前访问Action所在的路径以及当前所选的语言类型读取语言文件夹下的xml文件&#xff0c;再通过HtmlHelper传过来的key获取对应…

js实现倒计时 类似团购网站

一、demo与效果展示 为节约时间&#xff0c;我就直接套用了企鹅团的界面作为demo的背景。因为是倒计时&#xff0c;所以需要一个固定的时间&#xff0c;为了n年后&#xff0c;某位仁兄打开demo页面依然在倒计时&#xff0c;所以我把倒计时时间设成了2050年7月30日中午12点整&am…

阿里云+Ubuntu+LAMP+WordPress搭建个人博客网站

首发于个人网站http://139.196.86.184&#xff08;域名备案中&#xff09;&#xff0c;转载注明作者与出处&#xff0c;谢谢。 搭个人网站一般有两种选择&#xff1a; GitHub Pages Hexo / jekyl服务器 WordPress / Typecho之前试过1&#xff0c;现在试试2&#xff0c;个人选…

python使用requests和beautifusoup模块爬取学校网站的就业中心信息,并发送至自己的邮箱...

2019独角兽企业重金招聘Python工程师标准>>> 最近有一件非常难过以及无限悲伤的事情发生了&#xff0c;那就是Firebug停止更新和维护了&#xff01;&#xff01; Firebug作为一款前端调试工具&#xff0c;同时也是我接触的第一款前端工具&#xff08;虽然我仅使用它…

基于Vue+Vuex+iView的电子商城网站

MALL-VUE 这是一个基于VUE VUEX iView做的一个电商网站前端项目, 附带前后端分离实现版本(在forMallServer分支)&#xff0c;欢迎fork或star项目地址: https://github.com/PowerDos/Mall-Vue 项目预览地址(demo)&#xff1a; https://powerdos.github.io/Mall-Vue/index.html…

网站服务器2核4核怎么选,云服务器2核和4核的区别

云服务器2核和4核的区别 内容精选换一换云服务器创建完成后&#xff0c;数据盘需要初始化后才能使用。当使用弹性伸缩为伸缩组增加数量较多的云服务器时&#xff0c;您就需要逐一手动初始化数据盘&#xff0c;将会占用较长时间。本节为您介绍通过脚本自动化完成初始化磁盘的操作…

开通个人博客啦,附上Vultr+WordPress建站全面指南

历时一个月&#xff0c;终于搭起个人博客&#xff0c;并且将以前的文章都迁移到新的网站了&#xff0c;其中还经历了迁移wordpress的问题&#xff0c;网上虽然关于wordpress的问题解答有很多&#xff0c;但是有些不适用&#xff0c;也不全面&#xff0c;这里我将记录下建站的点…

打包Asp.Net 网站成为一个exe 方便快捷的进行客户演示

2019独角兽企业重金招聘Python工程师标准>>> 在Asp时代有一个NetBox 产品可以把整个Asp网站AllInOne的打包成一个exe&#xff0c;在没有IIS的情况下可以单独运行这个exe来开启整个网站。在Asp.Net 下一直没有类似的产品出现&#xff0c;可能是IIS已经非常的强大了&a…

你应该知道的关于SEO和Javascript的6个事实

你应该知道的关于SEO和Javascript的6个事实 了解JavaScript的基础知识已成为SEO专家的一项重要技能&#xff0c;尽管到目前为止&#xff0c;这两个学科之间的关系一直存在争议。 关于SEO和JavaScript的关键问题是发现搜索引擎机器人是否可以正确地感知网站内容并实际评估用户体…

加速,加速,再加速:来自Google的网站加速技巧大全

困扰许多网站所有者很久的一个问题是网站访问速度总是那么慢。想购买独立带宽&#xff0c;预算不允许&#xff0c;想购买CDN加速&#xff0c;价格又太贵。那有没有经济实惠的解决办法呢&#xff1f;从目前的大环境来分析&#xff0c;我们也只有通过技术手段来解决这个问题了。 …

28.分析采集美团网站信息-3

28.分析采集美团网站信息-3 今天又捋一下思路&#xff0c;在兼职&#xff0c;也没时间去坐下来仔细思考分析问题&#xff1a;1.首先获取分类&#xff0c;比如先获取美食&#xff0c;再划分其分类&#xff0c;分类里有火锅、蛋糕、小吃快餐等等后面都显示了共有多少个搜索结果。…

Asp.net压缩网站中的文件

为了说明自定义虚拟路径&#xff0c;这里弄个示例&#xff0c;仅仅用一个压缩包存放一个网站的多个文件。 这个东西是要需要通过实现3个抽象类来实现&#xff1a; System.Web.Hosting.VirtualPathProvider&#xff1b;System.Web.Hosting.VirtualDirectory&#xff1b;System.W…

大型网站技术架构(二)架构模式

2019独角兽企业重金招聘Python工程师标准>>> 每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心。这样&#xff0c;你就能一次又一次地使用该方案而不必做重复工作。 所谓网站架构模式即为了解决大型网站面临的高并发访问、海量数据、高可靠…

网站的SEO以及它和站长工具的之间秘密(转)

博客迁移没有注意 URL 地址的变化&#xff0c;导致百度和 google 这两只爬虫引擎短时间内找不到路。近段时间研究了下国内最大搜索引擎百度和国际最大搜索引擎google的站长工具&#xff0c;说下感受。 百度的站长工具地址&#xff1a;http://zhanzhang.baidu.com/dashboard/ind…

大型网站技术架构(八)网站的安全架构

2019独角兽企业重金招聘Python工程师标准>>> 从互联网诞生起&#xff0c;安全威胁就一直伴随着网站的发展&#xff0c;各种Web攻击和信息泄露也从未停止。常见的攻击手段有XSS攻击、SQL注入、CSRF、Session劫持等。 1、XSS攻击 XSS攻击即跨站点脚本攻击&#xff08;…

Nodejs建站笔记-注册登录流程的简单实现

1. 使用Backbone实现前端hash路由 登录注册页面如下&#xff1a; 初步设想将注册和登录作为两个不同的url实现&#xff0c;但登录和注册功能的差距只有form表单部分&#xff0c;用两个url实现显然开销过大&#xff0c;所以最终方案为使用hash作为前端路由&#xff0c;根据url的…

搜索引擎优化(SEO)解决方案

搜索引擎优化&#xff08;SEO&#xff09;解决方案 在此之前&#xff0c;希望大家能重新审视搜索引擎&#xff0c;通俗来讲就是我们日常所用的百度、谷歌、搜狗、雅虎等。磨刀不误砍柴工&#xff0c;知己知彼&#xff0c;百战不殆&#xff01; 一、搜索引擎是什么&#xff1f; …