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

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介:
构建高性能ASP.NET 站点  第五章性能调优综述(中篇)
  前言:本篇主要讲述用一些简单的工具来分析一些与站点性能有关的数据,在上一篇文章中,我们讨论了一下性能调优的一般过程,本篇就开始介绍一些方法和工具,让大家快速的入门。
 
本章的议题如下:
性能调优的一般过程
利用分析工具分析页面加载信息
利用分析工具分析性能瓶颈
 
  利用分析工具分析加载页面信息 
          站点的优化说到底还是站点每一个页面的优化,即使得站点的页面更快的呈现在用户的眼前。所以在此之前,我们首先来看看一个web 页面的组成部分:
         1. Html 文件: ASP.NET 中,Html 文件通常是通过解析.aspx 页面而产生的。而这个解析过程在服务端进行,同时这个过程也消耗了服务端的大部分资源。
         2.  图片和flash 文件:一个站点往往包含很多这样的的文件。
         3. Js css 文件:这些文件可以阻止页面的呈现。
 
  清楚了页面的组成部分之后,我们可以把使得页面加载变慢的因素分为如下几类:
1.        服务端的花费大量时间解析.aspx ,也就是说服务端产生html 文本的时间过长(导致这个问题的原因很多,例如数据库查询很慢,影响了页面的生成)。
2.        在服务端和浏览器之间,传递html 文本花费大量的时间(例如,页面中的Viewstate很大,网络很慢等)。
3.        图片和flash 文件的加载花费大量的时间。
4.       Js css 的加载花费大量的时间。
 
为了使得一个页面的加载变快,那么我们就得知道:是以上哪一个过程影响了速度( 本系列的后续文章会详细讲述) 。一旦知道了是那类问题导致了性能问题,那么我们就可以对症下药。
        
下面我们就通过一些工具来简单的查看和分析站点的性能,目的让大家快速的了解如何进行简单的性能分析。
 
我们用瀑布图来分析页面的每个组成部分加载所花的时间,例如下面就是博客园首页加载的分析图(部分的截图)。
我们可以通过图中的“时间线“长短来知道每个文件加载的时间。时间线长越长,那么加载该文件的时间越长,反之。
 
看完了上面的图之后,大家应该很想知道:上面的图是如何生成的,那么下面就介绍一些生成页面加载瀑布图的工具。
 
       我们首先来看看:Firefox+Firebug
         Firefox 下载地址: http://www.mozilla.com/en-US/firefox/
         Firebug 下载地址: http://getfirebug.com/
 
  下面就开始演示如何生成页面加载的瀑布图(如果熟悉这个流程的朋友可以跳过此段)
1.        打开Firefox ,然后按下F12, 就看到如下的画面:
 
2.        Firebug 中,在选择“网络”下拉框中选择“启用”。
         
         OK ,下面我们就来详细的看看在瀑布图中一些数据和图示的意义。
 
    1.  请求和响应的相关信息
在瀑布图中,点击每一行的”+” 如下:
 
 
符号 展开之后,我们可以看到所有的请求和响应头,如下:
 
 2.  时间线的相关信息
  当我们把鼠标移到着色的时间线bar 上面的时候,我们就可以看到请求该文件所花的时间的详细信息,如下:
 
 
  我们用一个表格来讲述每个时间段的含义:
域名解析
寻找请求的文件所在的服务器的IP 地址所花的时间
建立连接
打开客户端到服务端的TCP 链接所花的时间
发送请求
浏览器发送请求所花的时间。大家可能有点奇怪:为什么发送请求还要等待,难道不是打开连接就发送了请求吗?
其实浏览器会把要请求的文件的请求放在请求队列中,队列的长度一般都是有限制的,如果页面需要请求的文件很多,如果队列达到了最大的限制数量,那么后续的文件请求会等待。
等待响应
客户端发送请求一直到接受服务端的第一个字节所花的时间
接受数据
接受整个请求文件或者数据所花的时间
‘DOMContentLoaded’  事件
从该请求开始进行DNS 寻址到整个页面的DOM 被下载下来所花的时间。注意:此时只是页面的骨架被下载下来了,其中的一些资源(如果图片,js 等)没有下载下来。当页面的DOM 下载下来了之后,用户就可以看到了页面了,但是有些资源还在陆续的下载中。
‘load’  事件
从该请求开始进行DNS 寻址到整个页面全部(包括资源)下载下来所花的时间。
3.  页面级的请求信息
    也就是整个页面的请求的一些汇总信息。
 
  OK,今天就基本讲述这些,下一篇就开始讲述 利用分析工具分析性能瓶颈,用上面的瀑布图来分析一些常见的性能问题,这些性能问题会在后续文章中一个个的给出解决方案,敬请关注! :)




















本文转自yanyangtian51CTO博客,原文链接: http://blog.51cto.com/yanyangtian/490219  ,如需转载请自行联系原作者


相关文章
|
13天前
|
前端开发 关系型数据库 MySQL
ThingsGateway:一款基于.NET8开源的跨平台高性能边缘采集网关
ThingsGateway:一款基于.NET8开源的跨平台高性能边缘采集网关
|
23天前
|
存储 监控 算法
内存泄漏还是高性能?深度揭秘.NET垃圾回收机制
【8月更文挑战第28天】垃圾回收是.NET框架中自动化内存管理的关键机制,它通过分代收集算法自动清理不再使用的对象,简化了开发者的内存管理工作。本文深入解析了垃圾回收器的工作原理、对象内存分配策略及优化技巧,并介绍了多种监控工具,帮助提升.NET应用性能与稳定性。掌握这些知识将使开发者能够更高效地管理内存,提高应用程序的运行效率。
25 3
|
20天前
|
开发者 Apache 程序员
揭秘Apache Wicket:页面生命周期背后的神秘力量!
【8月更文挑战第31天】李工是一位热爱Web开发的程序员,近日在技术博客上分享了他对Apache Wicket框架的学习心得,特别是页面生命周期的理解。他认为掌握Wicket页面生命周期对于开发富交互式Web应用至关重要。他通过一个简单的计数器应用示例,详细解释了Wicket的组件化设计理念以及页面和组件在生命周期中的变化。
26 0
|
20天前
|
存储 测试技术 C#
Blazor WebAssembly 开启离线应用开发新时代!C# 与.NET 助力,打造高性能跨平台新体验!
【8月更文挑战第31天】在互联网快速发展的今天,用户对Web应用体验的要求日益提高,尤其在无网络环境下使用应用的需求愈发明显。Blazor WebAssembly 应运而生,它基于 WebAssembly 技术,允许开发者利用 C# 和 .NET 构建交互式 Web 应用,无需服务器支持即可在浏览器中运行,从而实现离线使用。Blazor WebAssembly 具有使用熟悉的技术栈、高性能、离线支持以及跨平台等优势。开发者可通过安装开发工具、创建项目、编写代码、调试测试及发布应用几个步骤来进行开发。这为离线应用开发开启了新篇章。
26 0
|
4月前
|
机器学习/深度学习 存储 编解码
多任务学习新篇章 | EMA-Net利用Cross-Task Affinity实现参数高效的高性能预测
多任务学习新篇章 | EMA-Net利用Cross-Task Affinity实现参数高效的高性能预测
123 0
|
10月前
|
算法 程序员 Linux
MKL.NET:为.NET开发者提供高性能数学计算支持的开源库
MKL.NET:为.NET开发者提供高性能数学计算支持的开源库
102 0
|
13天前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
21 7
|
11天前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
29 0
|
1月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
31 0