asp.net小談網(wǎng)站性能優(yōu)化
1、書(shū)寫(xiě)代碼的習(xí)慣;
再?gòu)?fù)雜的邏輯,也是從最簡(jiǎn)單的開(kāi)始。在書(shū)寫(xiě)代碼的過(guò)程中,很多不好的規(guī)范都會(huì)影響網(wǎng)站的性能;
以下是整理出來(lái)的些許代碼習(xí)慣:
1)字符串的比較 用 string.Empty 代替 " "
2)在遍歷過(guò)程中,先定義好計(jì)數(shù)變量, 再遍歷, 這樣會(huì)減少每次遍歷就分配一次內(nèi)存空間:
int i;
for( i=0; i<100;i++)
{
// codeing
}
3)同樣的,用 StringBuilder.Append() 代替 [csharp] string +="ABC" [/csharp];
4)在遍歷循環(huán)中中處理邏輯而不要調(diào)用其他方法形式,那樣在調(diào)用時(shí)會(huì)有性能損耗
5)累加/減時(shí),使用 A+=1,A-=1 ;而不用 A=A+1;這樣減緩申請(qǐng)內(nèi)存的次數(shù)
6)多用集合操作
a:如果如果集合中元素類型固定,則可以使用它們各自對(duì)應(yīng)的集合類,如數(shù)組、泛型等,這樣可以避免裝箱、拆箱操作;
b:如果集合中元素個(gè)數(shù)固定并且類型一致,則使用數(shù)組存儲(chǔ);
c:如果對(duì)集合的操作主要是查找方面的,可以使用HashTable,Dictionaty<TYey,TValue>
7) 使用Server.Transfer 來(lái)進(jìn)行頁(yè)面重定向
好處:性能比response.redirect要好很多,而且具有隱藏URL的好處,可以避免客戶端進(jìn)行頁(yè)面重定向;
壞處:要是用戶用刷新或是后退會(huì)導(dǎo)致發(fā)生意外的情況,所以請(qǐng)慎用
8)減少服務(wù)器控件的運(yùn)用
9)合理(適當(dāng)時(shí)候)使用緩存
10)減少Cookies大小
... ...
2、數(shù)據(jù)庫(kù)
1)數(shù)據(jù)庫(kù)最遲打開(kāi)、最早關(guān)閉;
2)優(yōu)化數(shù)據(jù)庫(kù)連接配置,對(duì)于大型網(wǎng)站由于數(shù)據(jù)庫(kù)中存在大量的數(shù)據(jù),所以可以加大其數(shù)據(jù)庫(kù)連接池
Max Pool Size=512;(默認(rèn)為100)
3)優(yōu)化SQL語(yǔ)句,并使用存儲(chǔ)過(guò)程
注意:盡量避免“select * from”之類的sql語(yǔ)句;盡量不要再查詢語(yǔ)句中使用子查詢;盡量使用索引;
4)使用DataReader
在 DataReader 中,我們經(jīng)常會(huì)用dr["字段名"]的查找形式,但是這種寫(xiě)法卻是最耗性能的;
一般,使用基于「序列號(hào)」的查找,比基于「命名」的查找更有效率。其中,可分為4類:
寫(xiě)法 (1) 使用 DataReader 索引 + 基于「序列號(hào)」的查找,如:dr[1].ToString(),
寫(xiě)法 (2) 使用 DataReader 索引 + 基于「命名」的查找,如:dr["LastName"].ToString(),這是性能最不好的寫(xiě)法
寫(xiě)法 (3) 使用 Get 開(kāi)頭的方法 + 基于「序列號(hào)」的查找,如:dr.GetString(1),寫(xiě)法
寫(xiě)法 (4) 使用 GetSql 開(kāi)頭的方法 + 基于「序列號(hào)」的查找,如:dr.GetSqlString(1),
寫(xiě)法 (5)使用 基于「序列號(hào)」+ GetOrdinal() 方法的查找。
GetOrdinal()函數(shù)方法是什么呢?
我們從數(shù)據(jù)庫(kù)中書(shū)寫(xiě)對(duì)應(yīng)的字段到我們查找的序列號(hào)上,但是有時(shí)候插入新的字段時(shí),會(huì)有所變化。而GetOrdinal()的作用就是讓我們自己來(lái)序列化相對(duì)應(yīng)的字段。
a、首先定義序列號(hào) int classid,classnameid;
b、然后通過(guò)GetOrdinal()方法賦予新的序列號(hào);
c、通過(guò)GetSqlSring( 序列號(hào) ) 方法就可找到對(duì)應(yīng)的字段。
示例代碼如下:
SqlConnection con = new SqlConnection(connString);
string strcmd = "select top 1 classid,classname where cms_class";
SqlCommand cmd = new SqlCommand(strcmd, con);
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
int numberId, numberName;
numberId = Convert.ToInt32(dr.GetOrdinal("classid"));
numberName = Convert.ToInt32(dr.GetOrdinal("classname"));
con.Close();
if (dr.Read())
{
string result = dr.GetSqlString(numberId) + " | " + dr.GetSqlString(numberName);
}
dr.Close();
- ASP.NET性能優(yōu)化之局部緩存分析
- ASP.NET 性能優(yōu)化之反向代理緩存使用介紹
- ASP.NET性能優(yōu)化之讓瀏覽器緩存動(dòng)態(tài)網(wǎng)頁(yè)的方法
- ASP.NET性能優(yōu)化之構(gòu)建自定義文件緩存
- ASP.NET性能優(yōu)化小結(jié)(ASP.NET&C#)
- asp.net 程序性能優(yōu)化的七個(gè)方面 (c#(或vb.net)程序改進(jìn))
- ASP.NET比較常用的26個(gè)性能優(yōu)化技巧
- ASP.NET性能優(yōu)化之減少請(qǐng)求
- ASP.NET技巧:同時(shí)對(duì)多個(gè)文件進(jìn)行大量寫(xiě)操作對(duì)性能優(yōu)化
- asp.net性能優(yōu)化之使用Redis緩存(入門(mén))
相關(guān)文章
Net?core中使用System.Drawing對(duì)上傳的圖片流進(jìn)行壓縮(示例代碼)
這篇文章主要介紹了Net?core中使用System.Drawing對(duì)上傳的圖片流進(jìn)行壓縮,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08深入.net調(diào)用webservice的總結(jié)分析
本篇文章是對(duì).net調(diào)用webservice進(jìn)行了詳細(xì)的總結(jié)與分析,需要的朋友參考下2013-05-05ASP.NET?Core基于現(xiàn)有數(shù)據(jù)庫(kù)創(chuàng)建EF模型
這篇文章介紹了ASP.NET?Core基于現(xiàn)有數(shù)據(jù)庫(kù)創(chuàng)建EF模型的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04asp.net文件上傳帶進(jìn)度條實(shí)現(xiàn)案例(多種風(fēng)格)
這篇文章主要講解了asp.net文件上傳帶進(jìn)度條實(shí)現(xiàn)案例,有不同風(fēng)格的進(jìn)度條,一定有一款最適合你,感興趣的小伙伴們可以參考一下2015-09-09VS2010、VS2008等項(xiàng)目的默認(rèn)瀏覽器修改方法(圖文)
默認(rèn)情況下,VS會(huì)使用操作系統(tǒng)的默認(rèn)瀏覽器,但我在調(diào)試 ASP.NET 程序時(shí)更偏向于使用IE瀏覽器,下面與大家分享下VS2010、VS2008等項(xiàng)目的默認(rèn)瀏覽器的修改方法2013-05-05ASP.NET中Validation驗(yàn)證控件正則表達(dá)式特殊符號(hào)的說(shuō)明
本文介紹asp.net中RegularExpressionValidator控件中的幾種特殊字符串使用規(guī)則,并做了代碼演示,希望對(duì)大家有所幫助。2016-04-04AntDesign Pro + .NET Core 實(shí)現(xiàn)基于JWT的登錄認(rèn)證功能
這篇文章主要介紹了AntDesign Pro + .NET Core 實(shí)現(xiàn)基于JWT的登錄認(rèn)證功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03asp.net下中文驗(yàn)證碼,免費(fèi)開(kāi)源代碼
asp.net下中文驗(yàn)證碼,免費(fèi)開(kāi)源代碼...2007-04-04