65.9K
CodeProject 正在变化。 阅读更多。
Home

提升 ASP.net 性能

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2013 年 10 月 11 日

CPOL

4分钟阅读

viewsIcon

6368

在开发任何网站时,都应牢记一些要点。1) 在 compilation 下将 debug 设置为 false,如下所示:<compilation default

在开发任何网站时,都应牢记一些要点。

1) 在 compilation 下将 debug 设置为 false,如下所示

<compilation default Language="c#" debug="false">

2) 使用 Server.Transfer 而不是 Response.Redirect。

3) 使用 Validator Controls 时,始终检查 Page.IsValid

4) 字符串迭代时,使用 Foreach 循环而不是 For 循环。

5) 使用客户端验证。(但并非每次都必须进行服务器端验证)

6) 检查 “Page.IsPostBack”。以避免重复的代码执行。

7) GIF 和 PNG 相似,但 PNG 通常文件尺寸更小。(正确,但某些浏览器不支持 PNG 格式)

8) 更新二进制文件时,使用 AppOffline.htm

9) 除非需要,否则关闭跟踪。(默认情况下是关闭的,在需要的地方使用)

<trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true"/>

10) 预编译页面并禁用 AutoEventWireup;在 Machine.config 文件中将 AutoEventWireup 属性设置为 false。

11) 如果不需要,则关闭会话状态。

<sessionstate timeout="20" cookieless="false" mode="Off" stateconnectionstring="tcpip=127.0.0.1:42424" sqlconnectionstring="data source=127.0.0.1;Trusted_Connection=no">

12) 在为应用程序进行最终构建之前,选择 Release 模式。

此选项位于顶部菜单的 Window 菜单选项正下方。默认情况下,模式为 Debug

13) 如果不需要,则禁用 ViewState。

EnableViewState="false"

14) 避免频繁往返数据库。

15) 使用缓存来提高应用程序的性能。

16) 验证从用户收到的所有输入。

17) 使用 Finally 方法来销毁资源。(但不适用于 using)

18) 字符串和 StringBuilder 的魔法。

当字符串被修改时,使用 StringBuilder 而不是 String 是很好的。字符串在每次修改时都会占用不同的内存位置,而 StringBuilder 使用单个内存位置。

19) 永远不要直接使用对象值;先将对象值获取到局部变量中,然后再使用。这比读取变量花费的时间更多。

20) 避免异常:使用 If 条件 (如果它能正确检查条件)

21) 代码优化:避免使用 x = x +1; 这样的代码,使用 x+=1 总是更好的。

22) 数据访问技术:DataReader 提供了一种快速有效的数据检索方法。在性能方面,DataReader 比 DataSet 快得多。

23) 在进行大量 ASP 代码处理之前,您可以检查以确保 Response.IsClientConnected。

24) 一如既往,避免使用会话变量,因为每个 ASP 页面都在不同的线程中运行,并且会话调用会逐一序列化。因此,这会减慢应用程序的速度。可以使用 QueryString 集合或表单中的隐藏变量来代替会话变量来保存值。

25) 启用缓冲可以提高性能,例如

<% response.buffer=true %>

然后使用

<% response.flush=true %> 

26) 使用 Repeater 控件而不是 DataGrid、DataList,因为它高效、可定制且可编程。

27) 当从数据库检索大量数据时,数据列表会消耗大量时间。

分页只会显示部分数据,但会加载所有数据。

只获取当前页面所需的数据。

28) 避免内联 JavaScript 和 CSS

29) 使用单个 css 文件而不是多个 css 文件。

尽力将所有基于 CSS 的类合并到一个 .css 文件中,因为大量的 .css 文件会导致大量的请求,无论文件大小如何。

.css 文件通常会被浏览器缓存,因此一个单独的、较大的 .css 文件不会在每次页面请求时导致长时间等待。

内联 .css 类可能会使 HTML 变得臃肿,所以再说一遍:还是使用单个 .css 文件吧。

30) 减小 cookie 大小

31) 压缩 CSS、JavaScript 和图像

在线压缩器可用;要压缩文件,请参考以下网站并将您的文件内容替换为优化后的代码。

http://iceyboard.no-ip.org/projects/css_compressor 用于 CSS 压缩

www.xtreeme.com/javascript-optimizer/ . 用于 JS 压缩

32 . 适当地使用缓存

i. 页面输出缓存

<%@ OutputCache Duration="3600" VaryByParam="none" %>

ii. 页面片段缓存

将页面输出缓存代码写入每个用户控件

iii. 数据缓存

<script language="C#" runat="server">

Protected void Page_Load (Object src, EventArgs e) {

DataView dv = (DataView) Cache. Get ("EmployeesDataView");

If (dv == null) { // 不存在SqlConnection conn =

new SqlConnection ("server=localhost;uid=sa;pwd=;database=Test");

SqlDataAdapter da =new SqlDataAdapter ("select * from Employees", conn);

Dataset ds = new DataSet();da.Fill(ds, "Employees");

dv = ds.Tables["Employees"].DefaultView;

Cache.Insert ("EmployeesDataView", dv);conn.Close();}

Else

Response.Write ("<h2>从数据缓存加载了员工! </h2>");

lb1.DataSource = dv;

lb1.DataTextField = "Name";

lb1.DataValueField = "Age";

DataBind () ;}

</script>

33) 使用服务器端压缩软件,如 Port80s 的 http://www.port80software.com/products/httpzip/  

34) "using" 的用法,我不知道为什么它还没有被发布。

35) 不要使成员变量公开或受保护,尽量保持私有,并使用公开/受保护作为属性。

36) 使用 strString=string.Empty 而不是 strString="" 。[也许也代替 strString=null (?)]

37) 使页面文件尽可能轻量。也就是说,尽量避免不必要的标记,例如,使用 div 元素而不是表格。

38) 将 静态消息写入 div,并在需要时使其可见。这比让服务器设置您的 label 或 div 的 Text 属性要快。

39) 如果可能,一次性从数据库检索数据。尽可能不要增加数据库的往返次数。为此,将不同表的数据字段合并并选择它们。

40) 为 WebControl 使用简短的 ID 名称。

© . All rights reserved.