導航:首頁 > 網站優化 > aspnet網站性能優化

aspnet網站性能優化

發布時間:2020-12-02 12:33:15

1、ASP.NET中常用的優化性能方法有哪些?

個人覺得優點是 1.界面和邏輯分離 2.編寫調試簡單,東西很易用。 網上找的觀點 以前的 Web 開發模型相比,ASP.NET 提供了數個重要的優點: 增強的性能。ASP.NET 是在伺服器上運行的編譯好的公共語言運行庫代碼。與被解釋的前輩不同,ASP.NET 可利用早期綁定、實時編譯、本機優化和盒外緩存服務。這相當於在編寫代碼行之前便顯著提高了性能。 世界級的工具支持。ASP.NET 框架補充了 Visual Studio 集成開發環 境中的大量工具箱和設計器。WYSIWYG 編輯、拖放伺服器控制項和自動部署只是這個強大的工具所提供功能中的少數幾種。 威力和靈活性。由於 ASP.NET 基於公共語言運行庫,因此 Web 應用程序開發人員可以利用整個平台的威力和靈活性。.NET 框架類庫、消息處理和數據訪問解決方案都可從 Web 無縫訪問。ASP.NET 也與語言無關,所以可以選擇最適合應用程序的語言,或跨多種語言分割應用程序。另外,公共語言運行庫的交互性保證在遷移到 ASP.NET 時保留基於 COM 的開發中的現有投資。 簡易性。ASP.NET 使執行常見任務變得容易,從簡單的窗體提交和客戶端身份驗證到部署和站點配置。例如,ASP.NET 頁框架使您可以生成將應用程序邏輯與表示代碼清楚分開的用戶界面,和在類似 Visual Basic 的簡單窗體處理模型中處理事件。另外,公共語言運行庫利用託管代碼服務(如自動引用計數和垃圾回收)簡化了開發。 可管理性。ASP.NET 採用基於文本的分層配置系統,簡化了將設置應用於伺服器環境和 Web 應用程序。由於配置信息是以純文本形式存儲的,因此可以在沒有本地管理工具幫助的情況下應用新設置。此"零本地管理"哲學也擴展到了 ASP.NET 框架應用程序的部署。只需將必要的文件復制到伺服器,即可將 ASP.NET 框架應用程序部署到伺服器。不需要重新啟動伺服器,即使是在部署或替換運行的編譯代碼時。 可縮放性和可用性。ASP.NET 在設計時考慮了可縮放性,增加了專門用於在聚集環境和多處理器環境中提高性能的功能。另外,進程受到 ASP.NET 運行庫的密切監視和管理,以便當進程行為不正常(泄漏、死鎖)時,可就地創建新進程,以幫助保持應用程序始終可用於處理請求。 自定義性和擴展性。ASP.NET 隨附了一個設計周到的結構,它使開發人員可以在適當的級別"插入"代碼。實際上,可以用自己編寫的自定義組件擴展或替換 ASP.NET 運行庫的任何子組件。實現自定義身份驗證或狀態服務一直沒有變得更容易。參考資料: http://www.nease.cn/default/serviceorder/asp_about.jsp

2、Lucene.Net建立索引 數據大概有百萬條 可是需要好久好久 請問有沒有辦法讓它變快呢??

minMergeFactor還有一個這樣的參數,控制在內存緩沖的文檔數量我是建了500條數據後關閉IndexWriter.70萬的數據都可以建就是創建索引速度的問題70萬花了12小時

3、VB.net(VB 2012)編的一個程序進行性能分析,CPU佔用不足30%但是需要較長時間才能出結果,請問如何優化

如果已知需要很多時間完成的任務,建議用多線程解決,如果覺回得有難度的話可以用BackgroundWorker組件答
你可以在每個循環的開始寫這個:
Debug.WriteLine(i) 'i是你循環的次數
然後你在調試時就可以在VS窗口下方觀察運行過程了

4、如何用VB.NET StringBuilder優化字元串操作性能

有許多字元串操作技巧可以幫助你優化代碼,以獲得更好的性能。StringBuilder允許你執行重復的字元串操作,取得比手工操作更佳的性能。在本文中,我說明在VB.NET中利用StringBuilder的情況。應用StringBuilder的優點StringBuilder是一個可修改字元的緩沖器。當你不直接進行字元串操作而應用StringBuilder時,與每次重復生成一個含有修正的新字元串相比,這樣可以獲得更佳的性能。你不能總是希望性能得到提高,因為StringBuilder有少量的過度操作,會將指定字元串的內容復制到StringBuilder中,然後將由StringBuilder得到的結果值復制回字元串對象中。在進行二個或更多字元串操作時,我建議使用StringBuilder。(如果只有一項改變,將值復制進StringBuilder再拷貝出來並不會改善性能。)StringBuilder方法Append:允許你在緩沖器末端增加一個字元串。注意,在應用StringBuilder對象時不能使用&操作符。 Insert:允許你在StringBuilder對象中增加一個字元串。(就像String.Insert一樣。) Remove:允許你從StringBuilder對象中刪除一個字元串。(就像String.Remove一樣。) Replace:允許你替代StringBuilder對象的一部分。(就像String.Replace一樣。) 實例在列表A的樣本代碼中,我建立一個字元串變數strOriginal來保存原始文本的值。我還定義StringBuilder對象BuilderStr,我將利用它對存儲在srtOriginal中的文本進行字元串操作。定義BuilderStr時,我將它設定到strOriginal的值中。之後,我操作BuilderStr,給它添加一些文本(「is」, 」very」,」 important」),然後再利用Replace方法去掉」very」這個單詞。(注意,在這個例子中,你使用Remove方法而非Replace方法。)最後,我用BuilderStr.ToString的值更新strOriginal,並在信息框中顯示所得到的字元串。

5、ASP.NET網站性能優化 需要考慮哪些方面

比如 1 資料庫,數據量大,比如建立索引等等,優化資料庫
2 有圖片的頁面,把圖片壓縮
3 盡量少用伺服器控制項,伺服器控制項要編譯成html控制項,導致速度不如純html控制項
4 代碼,減少冗餘的代碼,減少重復性的代碼,包括查詢數據語句等等,可使用存儲過程
5 分布式部署等等
還有很多,包括伺服器的好壞呀等等

6、.net性能優化從何入手。

行數、來控制項、事件、窗體和類等盡量自要少。(代碼)
Load和paint代碼不宜過多(引用的也算)。不宜過多引用和using。(性能)
線程不宜過多(timer也算是線程原理)
建議字體為宋體,微軟雅黑的cleartype也會拖慢性能。

7、C#上百M純文本提取,能提高性能的來,代碼已經有了,只需要優化。

多線程么?
如果我做的話,開多個線程,每 個線程讀 其中幾百條 ,同時做

8、哪些方面可以對asp.net進行性能優化

1、使用值類型的ToString方法
在連接字元串時,經常使用"+"號直接將數字添加到字元串中。這種方法雖然簡單,也可以得到正確結果,但是由於涉及到不同的數據類型,數字需要通過裝箱操作轉化為引用類型才可以添加到字元串中。但是裝箱操作對性能影響較大,因為在進行這類處理時,將在託管堆中分配一個新的對象,原有的值復制到新創建的對象中。
使用值類型的ToString方法可以避免裝箱操作,從而提高應用程序性能。
int num=1;
string str="go"+num.ToString();

2、運用StringBuilder類
String類對象是不可改變的,對於String對象的重新賦值在本質上是重新創建了一個String對象並將新值賦予該對象,其方法ToString對性能的提高並非很顯著。
在處理字元串時,最好使用StringBuilder類,其.NET 命名空間是System.Text。該類並非創建新的對象,而是通過Append,Remove,Insert等方法直接對字元串進行操作,通過ToString方法返回操作結果。
其定義及操作語句如下所示:
int num;
System.Text.StringBuilder str = new System.Text.StringBuilder(); //創建字元串
str.Append(num.ToString()); //添加數值num
Response.Write(str.ToString); //顯示操作結果

3、使用 HttpServerUtility.Transfer 方法在同一應用程序的頁面間重定向
採用 Server.Transfer 語法,在頁面中使用該方法可避免不必要的客戶端重定向(Response.Redirect)。
4、避免使用ArrayList。
因為任何對象添加到ArrayList都要封箱為System.Object類型,從ArrayList取出數據時,要拆箱回實際的類型。建議使用自定義的集合類型代替ArrayList。asp.net 2.0提供了一個新的類型,叫泛型,這是一個強類型,使用泛型集合就可以避免了封箱和拆箱的發生,提高了性能。
5、使用HashTale代替其他字典集合類型
(如StringDictionary,NameValueCollection,HybridCollection),存放少量數據的時候可以使用HashTable.
6、為字元串容器聲明常量,不要直接把字元封裝在雙引號" "裡面。
//避免
MyObject obj = new MyObject();
obj.Status = "ACTIVE";
//推薦
const string C_STATUS = "ACTIVE";
MyObject obj = new MyObject();
obj.Status = C_STATUS;
7、不要用ToUpper(),ToLower()轉換字元串進行比較,用String.Compare代替,它可以忽略大小寫進行比較.
例:
const string C_VALUE = "COMPARE";
if (String.Compare(sVariable, C_VALUE, true) == 0)
{
Console.Write( "相同");
}
也可以用str == String.Empty或者str.Length == 0判斷是否為空。(注意判斷輸入數據的長度,可防止sql注入式攻擊)
將String對象的Length屬性與0比較是最快的方法,避免不必要的調用 ToUpper 或 ToLower 方法。
8、類型轉化Int32.TryParse()優於Int32.Parse()優於Convert.ToInt32()。
建議.NET1.1下用Int32.Parse();.NET2.0用Int32.TryParse()。
因為:
Convert.ToInt32 會把最終的解析工作代理給 Int32.Parse;
Int32.Parse 會把最終的解析工作代理給Number.ParseInt32;
Int32.TryParse 會把最終的解析工作代理給Number.TryParseInt32。
9、如果只是從XML對象讀取數據,用只讀的XPathDocument代替XMLDocument,可以提高性能
//避免
XmlDocument xmld = new XmlDocument();
xmld.LoadXml(sXML);
txtName.Text = xmld.SelectSingleNode( "/packet/child").InnerText;
//推薦
XPathDocument xmldContext = new XPathDocument(new StringReader(oContext.Value));
XPathNavigator xnav = xmldContext.CreateNavigator();
XPathNodeIterator xpNodeIter = xnav.Select( "packet/child");
iCount = xpNodeIter.Count;
xpNodeIter = xnav.SelectDescendants(XPathNodeType.Element, false);
while(xpNodeIter.MoveNext())
{
sCurrValues += xpNodeIter.Current.Value+ ",";
}

9、ASP.NET中常用的優化性能方法有哪些?求解

網上找的觀點 以前的 Web 開發模型相比,ASP.NET 提供了數個重要的優點: 增強的性能。ASP.NET 是在伺服器上運行的編譯好的公共語言運行庫代碼。與被解釋的前輩不同,ASP.NET 可利用早期綁定、實時編譯、本機優化和盒外緩存服務。這相當於在編寫代碼行之前便顯著提高了性能。 世界級的工具支持。ASP.NET 框架補充了 Visual Studio 集成開發環 境中的大量工具箱和設計器。WYSIWYG 編輯、拖放伺服器控制項和自動部署只是這個強大的工具所提供功能中的少數幾種。 威力和靈活性。由於 ASP.NET 基於公共語言運行庫,因此 Web 應用程序開發人員可以利用整個平台的威力和靈活性。.NET 框架類庫、消息處理和數據訪問解決方案都可從 Web 無縫訪問。ASP.NET 也與語言無關,所以可以選擇最適合應用程序的語言,或跨多種語言分割應用程序。另外,公共語言運行庫的交互性保證在遷移到 ASP.NET 時保留基於 COM 的開發中的現有投資。 簡易性。ASP.NET 使執行常見任務變得容易,從簡單的窗體提交和客戶端身份驗證到部署和站點配置。例如,ASP.NET 頁框架使您可以生成將應用程序邏輯與表示代碼清楚分開的用戶界面,和在類似 Visual Basic 的簡單窗體處理模型中處理事件。另外,公共語言運行庫利用託管代碼服務(如自動引用計數和垃圾回收)簡化了開發。 可管理性。ASP.NET 採用基於文本的分層配置系統,簡化了將設置應用於伺服器環境和 Web 應用程序。由於配置信息是以純文本形式存儲的,因此可以在沒有本地管理工具幫助的情況下應用新設置。此"零本地管理"哲學也擴展到了 ASP.NET 框架應用程序的部署。只需將必要的文件復制到伺服器,即可將 ASP.NET 框架應用程序部署到伺服器。不需要重新啟動伺服器,即使是在部署或替換運行的編譯代碼時。 可縮放性和可用性。ASP.NET 在設計時考慮了可縮放性,增加了專門用於在聚集環境和多處理器環境中提高性能的功能。另外,進程受到 ASP.NET 運行庫的密切監視和管理,以便當進程行為不正常(泄漏、死鎖)時,可就地創建新進程,以幫助保持應用程序始終可用於處理請求。 自定義性和擴展性。

10、ASP.NET如何進行性能優化問題

一、SqlDataRead和Dataset的選擇

Sqldataread優點:讀取數據非常快。如果對返回的數據不需做大量處理的情況下,建議使用SqlDataReader,其性能要比datset好很多。缺點:直到數據讀完才可close掉於資料庫的連接

(SqlDataReader 讀數據是快速向前的。SqlDataReader 類提供了一種讀取從 SQL Server 資料庫檢索的只進數據流的方法。它使用 SQL Server 的本機網路數據傳輸格式從資料庫連接直接讀取數據。DataReader需及時顯式的close。可及時的釋放對數據的連接。)

Dataset是把數據讀出,緩存在內存中。缺點:對內存的佔用較高。如果對返回的數據需做大量的處理用Dataset比較好些可以減少對資料庫的連接操作。優點:只需連接一次就可close於資料庫的連接

*一般情況下,讀取大量數據,對返回數據不做大量處理用SqlDataReader.對返回數據大量處理用datset比較合適.對SqlDataReader和Dataset的選擇取決於程序功能的實現。

二、ExecuteNonQuery和ExecuteScalar

對數據的更新不需要返回結果集,建議使用ExecuteNonQuery。由於不返回結果集可省掉網路數據傳輸。它僅僅返回受影響的行數。如果只需更新數據用ExecuteNonQuery性能的開銷比較小。

ExecuteScalar它只返回結果集中第一行的第一列。使用 ExecuteScalar 方法從資料庫中檢索單個值(例如id號)。與使用 ExecuteReader 方法, 返回的數據執行生成單個值所需的操作相比,此操作需要的代碼較少。

*只需更新數據用ExecuteNonQuery.單個值的查詢使用ExecuteScalar數據綁定的選擇

三、數據的綁定DataBinder

一般的綁定方法用DataBinder.eval 綁定不必關心數據來源(Dataread或dataset)。不必關心數據的類型eval會把這個數據對象轉換為一個字元串。在底層綁定做了很多工作,使用了反射性能。正因為使用方便了,但卻影響了數據性能。來看下。當於dataset綁定時,DataItem其實式一個DataRowView(如果綁定的是一個數據讀取器(dataread)它就是一個IdataRecord。)因此直接轉換成DataRowView的話,將會給性能帶來很大提升。

*對數據的綁定建議使用。數據量大的時候可提高幾百倍的速度。使用時注意2方面:1.需在頁面添加.2.注意欄位名的大小寫(要特別注意)。如果和查詢的不一致,在某些情況下會導致比還要慢。如果想進一步提高速度,可採用的方法。不過其可讀性不高。

以上的是vb.net的寫法。在c#中:<@% ((DataRowView)Container.DataItem)["欄位名"] %>

對查看頁面每個執行過程狀態最簡單的辦法:其頁面的trace屬性為true就可查看細節。

一、使用存儲過程:

1、性能方面:存儲過程提供了許多標准sql語言中所沒有的高級特性。其傳遞參數和執行邏輯表達式的功能,有助於應用程序設計者處理復雜任務。另外,存儲過程存儲在本地伺服器上,減少了執行該過程所需的網路傳輸寬頻和執行時間。(存儲過程已經對sql語句進行了預編譯,所以其執行速度比在程序里執行sql語句快很多)

2、程序結構方面:從程序的可擴展性看,使用存儲過程會對程序以後的修改帶來方便。比如資料庫的結構改變了,只需修改相對應的存儲結構,和程序中的調用部分即可。這部分不屬於本文探討范圍,屬於程序結構設計方面。所以不在此展開。

3、程序安全性:使用存儲過程可避免SQL Injection攻擊。

二、查詢語句的優化(針對sql server2000)

很多人只為目的寫出sql語句,而不考慮sql語句的執行效率。在這我只提供一優化表順序的方法,(sql語句的優化和原則將會在我的sql server2000學習筆記中專題討論)

對sql語句執行效率可用sql server2000的查詢分析器來查看語句的執行過程。

優化表順序:一般情況下,sqlserver 會對表的連接作出自動優化。例如:select name,no from A join B on A. id=B.id join C on C.id=A.id where name=』wang』

盡管A表在From中先列出,然後才是B,最後才是C。但sql server可能會首先使用c表。它的選擇原則是相對於該查詢限制為單行或少數幾行,就可以減少在其他表中查找的總數據量。絕大多數情況下,sql server 會作出最優的選擇,但如果你發覺某個復雜的聯結查詢速度比預計的要慢,就可以使用SET FORCEPLAN語句強制sql server按照表出現順序使用表。如上例加上:SET FORCEPLAN ON…….SET FORCEPLAN OFF 表的執行順序將會按照你所寫的順序執行。在查詢分析器中查看2種執行效率,從而選擇表的連接順序。

*使用SET FORCEPLAN選擇表聯結順序

三、頁面的優化(.aspx)

主要針對幾個頁面屬性

1、EnableViewState(頁面的視圖狀態)。如果無特殊要求設置為false。使用ViewState ,每個對象都必須先序列化到 ViewState 中,然後再通過回傳進行反序列化,因此使用 ViewState是沒有代價的。盡量減少使用對象,如果可能,盡量減少放入 ViewState 中的對象的數目。下面情況基本上可以禁用viewstate:

(1)頁面控制項 (.ascx)

(2)頁面不回傳給自身。

(3)無需對控制項的事件處理。

(4)控制項沒有動態的或數據綁定的屬性值(或對於每個postpack都在代碼中處理)

單個頁面或每個頁面都禁用 ViewState,如下所示:單個頁面: 每個頁面:在 web.config 中 EnableSessionState保持默認值即可(如果頁面用到sessionstate它才會佔用資源)。EnableViewStateMac如果無安全上的特殊要求,保持默認值。

2、Pagelayout.頁面布局模型。建議使用Flowlayout(元素不帶絕對定位屬性添加).Gridlayout(絕對定位屬性)由於採用絕對定位,將會比Flowlayout生產更多的代碼,主要是控制項的定位信息。

3、項目發布的時候切記解除頁面的Debug狀態。

4、Html語言的優化。我的建議是熟練掌握Html/javascript,少用vs.net2003自動生產的代碼,它會自動生成一些無用的html代碼。

5、smart navigation設置為true能讓用戶明顯的感覺性能提高。啟用此屬性後對客戶端和服務端影響不大.它能智能涮新需要涮新需涮新的部分.

四、控制項的選擇:

Html控制項和伺服器控制項的選擇。伺服器控制項帶來的方便和功能上的實現是html控制項所不能比擬的。但是是以犧牲伺服器端的資源來取得的。我個人建議:如果html控制項達不到所要實現的功能,而且和一些腳本語言(如javascrpt/vbscript)結合也不能實現的話。才會選擇伺服器控制項。選擇伺服器控制項後,也盡量對其控制項優化,如取消一些頁面狀態等(具體看控制項的優化)

伺服器控制項的選擇:主要針對幾個常用數據控制項說明一下:

DataGrid:自帶最強大的數據顯示控制項,內置了對數據的修改、刪除、添加、分頁等很多實用功能。如果你只需對數據顯示的話,盡量不要選擇DataGrid(它把數據都存儲在viewstate中).也不要使用自帶的分頁功能,microsoft在自動分頁的底層做了很多工作,雖然使用方便了,但性能開銷大了。

DataList:比DataGrid功能少了很多。但自定義性強了很多。特有的多行數據顯示,給我們帶來了很多方便。DataGrid能實現的功能,它基本能實現。所以建議使用它。

Repeater:功能最少,但自定義性非常強。如果只需對數據顯示,建議使用。由於減少了很多功能,對伺服器的性能帶來消耗最小。因此,如果是對數據顯示的話,我基本上都是選擇Repeater然後DataList最後DataGrid

*盡量選擇html控制項。能在客戶端實現的功能就在客戶端實現(熟練掌握javascript),減少伺服器的壓力。數據控制項選擇順序:Repeater、DataList、DataGrid

五、伺服器控制項的優化:

1、Viewstate

控制項的viewstate與頁面的viewstate基本是一致的。用來保存控制項的一些狀態。處理原則和處理頁面的viewstate一樣。有興趣的可以用Datagrid綁定數據測試下viewstate保存的數據量有多大,它所保存的數據基本和Datagrid顯示的數據量大小是等同的。

2、Ispostpack

默認false.需要產生事件的時候才需設置為true.

控制項的優化,主要看你對此控制項的熟悉情況。對控制項內部運作的原理越了解,就會對其作出合適的優化。

與aspnet網站性能優化相關的知識