既然我们讲的是如何构建高性能的ASP.NET站点应用,那么我们就开始涉及网站方面的东西。我们说过,我们会把关注点放在“调优”上面。

在调优的时候,我们没有必要把事情搞的很复杂,要“由表及里。从整体到局部”。对于一个站点而言,我们最直接看到的就是网站的页面。换句话说,如果站点性能处理问题,肯定在页面上面会有反应。一个最显而易见的反应就是:页面加载很慢,半天看不到内容。

此时,我们可以进一步的分析,页面加载很慢,是什么原因导致的?

这里还是从最简单的方面入手。没有必要想的很复杂,我们要清楚:页面是由什么组成的?

很显而易见,一个页面,无非就是由Html文本,图片或者Flash,还有JS和CSS组成。换句话说,如果页面加载很慢,那么问题就出现在这些页面的这些组成部分上面。

页面解析过程

为了更好的说明,我们先来看看一个页面的加载的过程。

1.      当用户在浏览器地址输入一个地址,然后enter。

2.      此时浏览器首先会去进行域名解析,要么读取本地的DNS缓存,或者去远程网络上面解析,最后的结果就是把域名对应的IP地址得到。

3.      得到了IP地址之后,浏览器就开始发送请求,建立TCP连接,经过三次握手之后,连接就建立了。

4.      TCP连接建立之后,浏览器就把请求发送过去。

5.      服务端接收到请求之后,就开始处理,例如,如果请求的是一个页面(不管是动态的还是静态的),最后的结果就是:服务端把响应发送发送给客户端。

6.      在响应中,先发送的是响应头,之后就开始传递html内容。

7.      Html内容经过网络传输到了客户端浏览器之后,浏览器就开始加载网页的内容,开始呈现。产生的页面的内容html文本是以流的形式传递的,通俗的说就是一点点的传输的,直到html文本传递完成,此时页面里面所有的资源还是没有加载的,只是页面的html骨架加载完成了。

所以浏览器这边收到html内容之后就开始解析html,而且是从上到下进行解析的:先解析html标记,然后解析head,然后解析body…

在解析的过程之后,如果遇到要去加载资源的标记,例如<script>,<img> 等,此时浏览器再次发送请求,获取资源。一步步的,最后一直把整个页面全部解析完成,资源加载完成,展示在用户眼前。

问题解析

理解了这个过程,我们再次回到之前的问题。我们可以知道页面中不同的组成部分,对应的问题是不一样的,大致可以分为下面几类:

如果Html的产生过慢,那么,用户势必会花很长时间才能看到页面。如图:

同理,如果页面(页面的html文本内容)的传输过慢,那么,最后整个页面的解析也会往后面推迟,最后也导致用户很长时间之后才能看到页面,如图:

另外,图片和flash等资源的加载有问题,那么一方面会让用户看到这些资源,另外也会增加服务器的负担。如图:

Js和css的加载是个特别要注意的问题,因为js的加载是很“霸道“的:如果此时,在解析页面的html的时候,看到了<script  scr="www.agilesharp.com/js/ag.js/> 此时,浏览器就会发送请求去获取这个脚本,而且此时浏览器不会继续解析后面的页面内容,而是等到这个js回来之后,才能继续往下走。这就是为什么很多时候我们总是把一些不必要的脚本放在页面的最后加载的原因。而对于css而言,它不霸道,在加载css的同时,浏览器可以继续往下面走,解析下面的页面内容。

问题的分类

看完了上面简单的分析之后,我们可以再次思考,把上面的问题进行分类。因为上面的问题的产生,肯定有一个最后归根究底的原因的,我们可以通过上面的分析,把他们这些原因对应上,如图:

20130311165048.png(26.23 K)

2013/3/11 16:59:04

在我们后续的讲解中,更多的从上图中的内容进行讨论。

从这里就验证了我们之前讲述的很多的内容:分析问题要顺藤摸瓜,由表及里的分析.

更多:

构建高性能的ASP.NET应用(一)-先把思路搞对,然后对症下药

构建高性能的ASP.NET应用(二)-性能优化演绎法

构建高性能的ASP.NET应用(三)-从监控出发,让一切用数据说话

构建高性能的ASP.NET应用(四)-性能的优化的目标

构建高性能的ASP.NET应用(五)-如何开始寻找性能瓶颈相关推荐

  1. 转:构建高性能ASP.NET站点 第五章—性能调优综述(中篇)

    构建高性能ASP.NET站点 第五章-性能调优综述(中篇) 前言:本篇主要讲述用一些简单的工具来分析一些与站点性能有关的数据,在上一篇文章中,我们讨论了一下性能调优的一般过程,本篇就开始介绍一些方法和 ...

  2. 【原创】构建高性能ASP.NET站点 第五章—性能调优综述(后篇)

    构建高性能ASP.NET站点 第五章-性能调优综述(后篇) 前言:本篇主要讲述如何根据一些简单的工具和简单的现象来粗布的定位站点的性能问题. 本章的议题如下: 性能调优的一般过程 利用分析工具分析页面 ...

  3. 【原创】构建高性能ASP.NET站点 开篇

    原文:[原创]构建高性能ASP.NET站点 开篇 构建高性能ASP.NET站点 开篇 前言:有段时间没有写ASP.NET的东西了,心里总是觉得缺少了什么,毕竟自己对ASP.NET还是情有独钟的. 在本 ...

  4. 构建高性能ASP.NET站点 开篇

    前言:有段时间没有写ASP.NET的东西了,心里总是觉得缺少了什么,毕竟自己对ASP.NET还是情有独钟的. 在本系列文章中,准备比较全面的讲述ASP.NET的性能的优化,从前台到后台,以后本列文也看 ...

  5. 构建高性能.NET应用之配置高可用IIS服务器-第五篇 IIS常见问题之:工作进程回收机制(中)...

    我们在本篇中接着讲述"工作进程回收机制". 本篇文章的议题如下:                工作进程回收机制讲解 基于时间的回收机制                基于请求数的 ...

  6. 构建高性能.NET应用之配高可用IIS服务器-第五篇 IIS常见问题之:工作进程回收机制(中)

    我们在本篇中接着讲述"工作进程回收机制". 本篇文章的议题如下:          工作进程回收机制讲解 基于时间的回收机制          基于请求数的回收机制         ...

  7. 构建高性能ASP.NET站点 第六章—性能瓶颈诊断与初步调优(下前篇)—简单的优化...

    构建高性能ASP.NET站点 第六章-性能瓶颈诊断与初步调优(下前篇)-简单的优化措施     前言:本篇给出一些在部署ASP.NET站点时采用的简单的优化措施.        本篇议题如下:     ...

  8. 构建高性能ASP.NET站点 第七章 如何解决内存的问题(后篇)—托管资源优化—监常用优化措施...

    构建高性能ASP.NET站点 第七章 如何解决内存的问题(后篇)-托管资源优化-监常用优化措施   前言:有段时间没有写这个系列了,希望大家见谅,本篇主要将会介绍一些常用的CLR优化措施. 本篇的议题 ...

  9. 微服务实战(五):落地微服务架构到直销系统(构建高性能大并发系统)

    在现代系统中,特别是互联网软件,通常会涉及到大量用户的并发访问,我们的系统一定要在架构上支持高性能.大并发的访问.一个高性能的系统通常由很多的方面组成,包括数据库高性能.Web服务器高性能.负载均衡. ...

最新文章

  1. [20180627]测试bbed是否支持管道命令.txt
  2. Reactjs 踏坑指南3:一些例子(未完成)
  3. JDK、JRE、JVM三者间的关系(有图)
  4. 南华大学计算机学院足球队,球场健儿,不言放弃——记南华大学“新生杯”足球赛...
  5. ubuntu 退出anaconda环境_ubuntu 安装两个Anaconda,并迁移虚拟环境
  6. 【React自制全家桶】一、Webstrom+React+Ant Design+echarts搭建react项目
  7. antdesign 地图_React 使用recharts实现散点地图的示例代码
  8. c语言数组读心术,无聊的时候写的读心术小程序
  9. Python 为何能成最强编程语言?!
  10. 搜索系统硬盘中包含指定字符串的文件的工具和方法——全文搜索、搜索文件内容(持续更新中)
  11. python快速处理ppt_这10个批量处理的PPT技巧,让你的效率提升100倍!
  12. 使用hashcat破解Windows账户密码
  13. 我Linux桌面上的卡通MM真的很像ZPR吗?
  14. live555 官方网站源码下载地址
  15. 互联网快讯:天猫双11总交易额再创新高;极米投影产品成双十一单品爆款;柔宇科技斩获6亿元大额订单
  16. Ajax实现点击导航栏只切换页面内容,导航栏不变
  17. 医学知识---之T1,T2,flair,stir
  18. LTC6268-10 4GHz 超低偏置电流 FET 输入运算放大器
  19. Mac OSX ffmpeg 硬件加速
  20. 腾讯课堂学习资源链接地址

热门文章

  1. 阿里云数据库POLARDB技术沙龙火热报名中,李飞飞,曹伟 众大神齐到场,200个席位先到先得!...
  2. ubuntu 强制关机后 mysql无法启动
  3. Java -- JDBC 学习--数据库连接池
  4. Js高设笔记1-2章 defer and async
  5. Memcache的部署和使用
  6. 覆盖(override)和重载(overload)
  7. [转] 不要被C++“自动生成”所蒙骗
  8. [C#]解决生成的缩略图模糊的问题
  9. 使用NAT实现TCP负载均衡
  10. 步步为营 .NET 设计模式学习笔记 十九、Chain of Responsibility(职责链模式)