久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

提高ASP.Net網(wǎng)站性能

 仰望//45度微笑 2012-04-17

1,、緩存
對那些經(jīng)常使用的數(shù)據(jù)和需要大量的時間來創(chuàng)建的數(shù)據(jù)可以存儲在內(nèi)存中,,后來的請求直接使用,不需要在從新生成,,
使用方法很簡單:
<%@OutputCache VaryByParams="none" Duration="120"%>
使用緩存的原則:
1)在頁面中靜態(tài)的內(nèi)容和動態(tài)的內(nèi)容分割開來,。
       可以把動態(tài)內(nèi)容單獨出來,做成用戶控件
2)緩存合理的數(shù)據(jù)
  并不是所有的數(shù)據(jù)內(nèi)容都進行緩存就能提高性能的,,由于服務器的資源是有限的,,緩存不適當?shù)臄?shù)據(jù)反而會降低性能,應當緩存的應該是應用程序級的數(shù)據(jù),,多個用戶
  共同使用的數(shù)據(jù),,靜態(tài)數(shù)據(jù),生成數(shù)據(jù)需要開銷很大的數(shù)據(jù),,DataSet以及自定義的對象等,,不要緩存數(shù)據(jù)庫連接對象,不要緩存DataReader.
3)選擇適當?shù)姆绞?
--------------------

2,、視圖
1)如果不需要用視圖請禁用它,,
視圖狀態(tài)默認是允許的,,如果頁面不進行Postback如果不處理服務器控件事件,可以禁用它
2)盡量減少視圖狀態(tài)中存放的對象
      不要在視圖狀態(tài)中存放大量的對象,。
--------------------

頁面處理
1)盡量減少頁面文件的大小
    將CSS和腳本存為單獨的文件,,不要將多個任務放在同一個頁面中,不要指定服務器控件的ID數(shù)據(jù)位比較長的字符串
2)通過Page.IsPostBack減少代碼的執(zhí)行數(shù)量,。
3)禁用Debug="true" 減少頁面生成額外的調(diào)試信息,,
4)使用Server.Transfer而不使用Response.Redirect
5)盡量使用客戶端驗證,減少使用服務器端的驗證,,減少服務器和客戶端之間的往返,。
6)在適當?shù)臅r候使用客戶端服務器控件
   如果不需要在回發(fā)時保持狀態(tài),如果顯示的數(shù)據(jù)是靜態(tài)數(shù)據(jù),,如果不需要自愛服務器端用代碼訪問控件,,如果不需要回發(fā)處理,如果顯示的是只讀數(shù)據(jù),,就可以考慮不使用
   服務器控件,。
7)盡量避免嵌套服務器控件。

--------------------
避免使用Page.DataBind和DataBinder.Eval
Page.DataBind執(zhí)行時會將頁面中所有的服務器控件執(zhí)行一次DataBind方法,,如果沒有必要就不要使用,。
DataBinder.Eval方法是使用反射來獲取參數(shù)的。盡量少使用,,
盡量不要使用:
<ItemTemplate>
<tr>
  <td><%#DataBinder.Eval(Container.DataItem,"字段一"))%></td>
  <td><%#DataBinder.Eval(Container.DataItem,"字段一"))%></td>
</tr>
</ItemTemplate>
而使用:
<ItemTemplate>
<tr>
  <td><%#(DataRowView)Container.DataItem["字段1"]%></td>
  <td><%#(DataRowView)Container.DataItem["字段1"]%></td>
</tr>
</ItemTemplate>

--------------------
關(guān)于Application和Session對象
1)盡量使用InProc模式的Session這個模式最快
2)在Session里存儲基本類型的書減少序列化所消耗的資源
3)如果不用Session,,請使用EnableViewState=“false”禁用它
4)如果不修改Session變量,,請用ReadOnly屬性設置

--------------------
關(guān)于字符串操作
1)盡量使用Response.Writ將結(jié)果輸出,,這種方法是最快的。不要將字符串連接在一起一次輸出
2)在字符串短并且少的情況使用String.Concat方法,,在字符串長度未知,,并且比較長的情況下使用SringBuilder對象
3)不要使用StrVar==""來判斷字符串是否為空,這樣會產(chǎn)生額外的字符串,,請使用StrVar==String.Empty代替,,或者使用StrVar.Length==0來判斷
4)請使用String.Compare方法來比較字符串
--------------------
關(guān)于數(shù)據(jù)訪問
1)盡量使用存儲過程返回數(shù)據(jù)
2)在數(shù)據(jù)庫中只返回有用的數(shù)據(jù)結(jié)果,不要選擇不使用的數(shù)據(jù)字段,。
3)進行使用DataReader進行數(shù)據(jù)綁定,,DataReader是單向只讀的。
4)盡量一次返回多個記錄集,,而不是每個記錄集分別打開一次數(shù)據(jù)庫連接進行查詢,。
5)盡量晚的打開數(shù)據(jù)庫連接,盡量早地關(guān)閉數(shù)據(jù)庫連接,,(盡量使用using語句關(guān)閉數(shù)據(jù)庫連接,,)
6)使用連接池提高網(wǎng)站性能,,不要變動數(shù)據(jù)庫連接字符串,不要將連接進行緩存或者放置在Application對象中,,當使用連接池時,,關(guān)閉連接并不是物理連接,
而是將連接返回給連接池供別的用戶使用,,因此應該盡量早的關(guān)閉連接,,
7)使用ExecuteNonQuery返方法執(zhí)行不返回數(shù)據(jù)的操作,使用ExectueScalar方法返回單個結(jié)果的操作,,
使用CommandBehavior.SequentialAccess返回二進制數(shù)據(jù)或者大數(shù)據(jù),。
8)如果多次相同查詢,使用Command.Prepare方法,。
9)使用GetOrdinal方法預先得到索引值,,使用縮影值比使用字符串的列名查詢數(shù)據(jù)效率更高,
--------------------

關(guān)于代碼優(yōu)化
1)在解析基本數(shù)據(jù)類型是,,使用TryParse方法比Try好
2)使用AppendAllText,WriteAllBytes,、WriteAllLine,WriteAllText,ReadAllBytes、ReadAllLine,、ReadAllText方法讀寫文件內(nèi)容可以優(yōu)化性能,,
3)不要使用如下方法
string[]arr=new string{"fly","flying"}
for(int i=0;i<arr.Length;i++)
{
  //TODO
}
這種方法每循環(huán)一次就計算一次arr.Length的值。而使用
string[]arr=new string{"fly","flying"}
int length=arr.Length;
for(int i=0;length;i++)
{
  //TODO
}
4)避免在循環(huán)里創(chuàng)建對象
for(int i=0;i<10;i++)
{
  SqlConnection cn=new SqlConnection();
  //ToDo
}
而使用
SqlConnection cn=new SqlConnection();
for(int i=0;i<10;i++)
{
  //ToDo
}
5) 盡量減少裝箱的次數(shù),,如果要在多處進行類型轉(zhuǎn)換,,請先定義一個變量
如:
int i=129;
object box;
box=(objiect)i;
//下面多次使用Box,;
6)不要使用例外控制程序流程,,
void UserExists(string UserID)
{
  if(dr.Read())
  {
   throw(new Exception("用戶名不存在");
  }
}
修改代碼如下:
bool UserExists(string UserID)
{
  return dr.HasRows;
}
7)在循環(huán)中不要使用不變的對象或者字段,,例如:
for(int i=0;i<Customer.Order.Count;i++)
{
  PrintCustomerData(Customer.State,Customer.Zip,Customer.Order[i]);
}
這樣的話沒錯循環(huán)都要查找對象的屬性值 或者字段,。
string state=Customer.State;
string []zip=Customer.Zip;
int count=Customers.Order.Count;
for(int i=0;i<count;i++)
{
  PrintCustomerData(state,zip,Customer.Order[i]);
}
8)使用for循環(huán)代替foreach循環(huán)
9)數(shù)組是所有集合中最快的,如果沒有特殊的需要,,盡量使用數(shù)組代替集合
10)了解各個集合的特性,,選擇合適的類型,
11)使用泛型,,避免減少使用裝箱,,拆箱。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多