提升 ASP.net 性能





0/5 (0投票)
在开发任何网站时,都应牢记一些要点。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) 除非需要,否则关闭跟踪。(默认情况下是关闭的,在需要的地方使用)
10) 预编译页面并禁用 AutoEventWireup;在 Machine.config 文件中将 AutoEventWireup 属性设置为 false。<trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true"/>
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 名称。