高性能ASP.NET站点构建之简单的优化措施

部署优化

我们都知道,不同的部署方式对站点的性能是有影响的,可能有些朋友已经知道了这点,不管怎样,我们这里还是详细系统的讲述一下这个问题,熟悉的朋友权当回顾J。

Release方式编译项目

如果我们的项目是用Project的方式建立的,也就是说:我们的站点包含在一个Solution解决方案中,那么在发布之前,编译项目的时候,采用release方式,这种方式会减少CPU的使用率。因为采用debug的方式发布,编译器会编译后的代码中加入很多的信息,如调试信息等。

操作步骤:

1. 在VS中,选择” Build | Configuration Manager”.如下:

2. 在”Active Solution Configuration”下拉框现在””Release”,然后”Close”.那么Solution就以Release方式编译。(其实使得Solution编译为Release的方法很多,例如在Solution上面右击”属性”,然后去设置也是可以的)

现在虽然Solution是Release方式了,但是如果我们去查看这个Solution下面的ASP.NET站点程序的config文件,发现还是deubg方式的。那么我们在发布站点的时候,需要手动的去修改为release。

注:如果Solution是以debug方式编译,即使web.config设置了release,最后发布的站点的代码还是方式的。

站点发布

发布的步骤如下:

1. 修改web.config配置如下:

2. 在站点上面右键选择”Publish”.如下:

减少不必要的回传

我们都知道,从服务端到客户端的回传每次都是需要花费一定的时间的,而且加长了用户等待的时间。所以有些回传则是可免则免。 

Server.Transfer Vs Response.Redirect

如果我们需要在服务端把用户定向到另外的一个页面,那么考虑一下:尽量使用Server.Transfer,而不是使用Response.Redirect。

因为当使用Response.Redirect的时候,服务端会向客户端的浏览器发送一个响应:告诉浏览器去加载转向的那个页面。然后浏览器再次发送请求到服务端去请求另外的那个页面。

当我们使用Server.Transfer的时候,服务端就立刻执行跳转。这样做的一个不好的地方可能就是:此时请求的是A.aspx,其实服务端已经跳转到了B.aspx页面,但是浏览器上面的Url还是显示的A.aspx。

当使用Server.Transfer需要注意:确定每次访问A页面都需要跳转到B页面的时候,就是用Server.Transfer。例如,拿博客园来举例,当用户在没有登录的时候想对正在阅读的一篇文章评论,那么此时,页面就会跳转到Login的登陆页面,登陆之后,页面就跳转到之前看文章的那个页面,然后写评论。此时的这个跳转就不适合用Server.Transfer,而采用Response.Redirect。如果不管用户在哪里,只要用户登陆,那么总是跳到一个固定的页面,那么就可以使用Server.Transfer。

还有就是Server.Transfer毕竟会消耗服务端的资源,使用的时候要注意。

通过上面可以看出:调优本来就是一个折中的过程,不是绝对的。调优最后说到底就是”时空转换—时间换空间,空间换时间”。  

声明站点的默认页面

当我们请求一个站点的时候,如http://domain/folder,IIS会自动进行一些重定向到http://domain/folder/。同时,http.sys也不会把没有声明默认页面的站点的默认首页加入到内核的缓存中(可能说的有点的绕),例如,如果在程序中,我们设置站点的默认页面时Default.aspx,但是我们在部署到IIS的时候,没有配置Default.aspx就是站点的默认页面,那么这个页面的内容不会被http.sys缓存到内核中。所以为了避免IIS重定向和允许http.sys缓存页面,我们在IIS中要配置站点的默认页面(或者每次在浏览器中输入http://domain/folder/default.aspx,但是我们不能控制用户的行为,所以这招这几乎不可能)

永久跳转相关话题

如果我们站点的某个页面过期了或者不再用了,那么我们就可以采用301永久跳转。当服务端向客户端发出301响应的时候,浏览器和代理都会去更新他们的缓存(如果之前的旧页面采用了缓存),而且搜索引擎也会采用新的页面。

要让服务端向客户端发送301响应,如下的方式:

1.代码:

在ASP.NET 4.0 及以后的版本:

Response.RedirectPermanent("NewPage.aspx");

2. IIS配置

a)   IIS 6配置

1. 在IIS中站点中,选中你想跳转的文件或者目录。

2. 选中”A redirection to a URL”

3. 然后输入你想跳转到的页面。

4. 然后选中”The exact url entered above”和”A permanent redirect for this resource”。

b)   IIS 7

在Server 2008上面

1. 打开”开始”->”管理工具”->”服务器管理”

2. 在IIS上面添加”角色服务”

3. 在”常见Http功能”下面选中”Http重定向”

4. 然后安装。

在Win7 上面,如下:

然后,在我们的站点的web.config配置如下:

  1. <configuration>
  2. <locationpath="OldPage.aspx">
  3. <system.webServer>
  4. <httpRedirectenabled="true"destination="NewPage.aspx"httpResponseStatus="Permanent"/>
  5. </system.webServer>
  6. </location>
  7. </configuration>

今天就到这里,多谢各位!

原文链接:http://www.cnblogs.com/yanyangtian/archive/2011/02/15/1954804.html

更多相关文章
  • 前言:本章主要详细的讲述如何因内存问题而导致的性能问题,很多的时候都是深入.NET内核进行分析,然后给出解决方案,同时,本系列的其他文章,也争取做到:深入浅出.本篇是为后面的做个铺垫,而且比较的精彩.只有真正的理解了本篇,后面才可以顺利的走下去.本篇的议题如下:内存问题概述(前篇)托管资源优化(前篇 ...
  • 前言:这段时间,把系列文章又重新整理了一下,之前关于性能优化的介绍一些不是很清晰.可以说从本篇开始,才算是一个完整的系列的开始. 本章的议题如下:性能调优的一般过程利用分析工具分析页面加载信息利用分析工具分析性能瓶颈性能调优的一般过程在解决性能问题之前首先要确认问题的所在,首先就来看看确保高性能的一 ...
  • CLR计数器的使用我们使用系统自带的性能监测工具来跟踪和监测垃圾回收器.下面,首先介绍几个常用的CLR性能监测计数器,我们一般查看.NET CLR Memory分类下的计数器:Percent Time in GC表明了从上次垃圾回收机制运行之后到现在这段时间内,运行垃圾回收机制所花的时间占总时间的百 ...
  • 前言:从本篇开始就真正的进入了性能调优的阶段,在之前的文章中提到了页面加载过慢的四个性能问题,其中第一个问题就是:服务端解析<页面的时间过长,本篇就分析这个问题,给出一些方案,因为涉及到的问题很多,的在后续文章会逐个详细介绍.因为本篇的篇幅过长,所以划分为了多篇. 本篇的议题如下:识别和分析服 ...
  • 前言:曾经就因为一个小小的疏忽,从而导致了服务器崩溃了,后来才发现:原来就是因为一个循环而导致的,所以,对“注意细节“这一说法是深有感触.本篇的议题如下:问题的描述细节的重要性问题的描述首先,描述一下故事的背景:(希望大家耐心的故事读完)在网站中,网页中的分页控件每次显示10条数据,每次点击下一页, ...
  • 构建高性能ASP.NET站点第六章-性能瓶颈诊断与初步调优(下前篇)-简单的优化措施    前言:本篇给出一些在部署ASP.NET站点时采用的简单的优化措施.     本篇议题如下:    识别和分析服务端的性能瓶颈(上)(前篇)(前篇)(前篇)(前篇)部署优化(前篇)减少不必要回传(前篇)减少不必 ...
  • 构建高性能ASP.NET站点第五章—性能调优综述后篇
    构建高性能ASP.NET站点第五章-性能调优综述(后篇)    前言:本篇主要讲述如何根据一些简单的工具和简单的现象来粗布的定位站点的性能问题. 本章的议题如下:性能调优的一般过程利用分析工具分析页面加载信息利用分析工具分析性能瓶颈     利用分析工具分析性能瓶颈    在上一节中,讲述了如何使用 ...
  • 构建高性能ASP.NET站点第七章如何解决内存的问题(前中篇)-托管资源优化-监测CLR性能    前言:在上一篇文章中讲述了一些垃圾回收的一些知识,本篇就讲述如何来监测CLR是否导致了一些性能问题.  本篇的议题如下:内存问题概述(前篇)托管资源优化(前篇)对象的生命周期(前篇)对象的" ...
一周排行
  • 几种shell里的小括号,大括号结构和有括号的变量,命令的用法3 3 在这里我想说的是几种shell里的小括号,大括号结构和有括号的变量,命令的用法,如下: 1.${var} 2.$(cmd ...
  • CentOS 7.0中一个最主要的改变,就是切换到了systemd.它用于替代红帽企业版Linux前任版本中的SysV和Upstart,对系统和服务进行管理.systemd兼容SysV和Linux标准组的启动脚本.S ...
  • enumjdkjava51.41.73.package Enum;enum Score {A, B, C, D, E;};publicclass EnumExample {/**     * 枚举类的理解的例子(一个 ...
  • 分层的目的是为了把复杂的功能模块化,易于描述,易于实现和维护.一般认为L3就是负责实现网际互连(internetworking).比如IP,可以实现全球的IP网络的互连,你只需要一个IP地址.这时就有一个问题.条条大 ...
  •      <致青春>是这段比较火的电影,我知道是四月二十六开播的,我本以为我会在第一时间抢先看,可没想到对电影不痴迷的我这时候才看--      今晚没事,不想学习,又感觉空虚无聊,就想到了前天在段进毅那 ...
  • 用Word2010发布博文
    博客,又名部落格.网志等等,已然成为网络上最热门的关键词.现在的博客已并非是只记录个人生活 ...
  • 上海滩引爆数据中心热潮--GB50174<电子信息系统机房设计规范>贯标培训活动     中国工程建设标准化协会下属专业技术工作组--数据中心工作组,即北京.沈阳培训后,于2009年5月23日在上海科学会 ...
  • 失败企业的征兆——供不想失败的企业反躬自省作者:张国祥2011/9/27有人说成功的企业各不相同,失败的企业多有雷同.故此寻找成功的密码殊为不易,总结失败教训则相对简单.面对日益严峻的市场挑战和环境考验,众多生存着的 ...
  • 大家都知道什么方法是最好的预防措施吗,我个人觉得,就是在事情没有放生之前制止了,这个是一个比较好的方法,从而,我们也就知道,只要在开机的时候,拒绝木马运行,也就从此和它88了(一)删除不正常启动项目1 开始 中 启动 ...
  • MultiRow发现之旅一-高效模板设计器
    在这篇博客中我将向大家介绍一个集成在VisualStudio中的很酷很给力的设计器——Mu ...