如何真正提高ASP.NET网站的性能
前言
怎么才能讓asp.net網(wǎng)站飛得更快,有更好的性能?——這是很多開發(fā)者常常思考的一個(gè)問題。我有時(shí)候會(huì)做大量的測(cè)試,或請(qǐng)求別人幫忙采集一些數(shù)據(jù),希望能夠驗(yàn)證網(wǎng)上一些專家的建議或證明自己的一些猜想。
理論上講,我們希望能開發(fā)出性能最優(yōu)的網(wǎng)站,但是公司能否承擔(dān)為此要付出的成本?這是實(shí)踐過程中常常遇到的矛盾。 如何合理運(yùn)用已知技巧在實(shí)戰(zhàn)中是最有意義話題。
本文羅列出一些優(yōu)化的經(jīng)驗(yàn)和方案,成文之前有幸看了一些高質(zhì)量的文章。想強(qiáng)調(diào)一點(diǎn),很多的部分不是我個(gè)人的勞動(dòng)成果,但我完全的支持和同意這樣去做,不敢獨(dú)享,希望拋磚引玉,共同長(zhǎng)進(jìn)。
IIS設(shè)置
如果你的IIS服務(wù)器不需要外出訪問互聯(lián)網(wǎng),關(guān)閉Certificate Revocation List (CRL)machine.config 中 generatePublisherEvidence證書撤銷清單的Authenticode的二進(jìn)制文件(CRL)檢查。
可以參考下面的文章:
http://msdn.microsoft.com/zh-cn/library/bb629393.aspx
打開IIS Compression (HTTP 壓縮), 默認(rèn)情況下IIS7.x 和 IIS6 都沒有打開這項(xiàng)。 這可以幫助你提高帶寬的使用效率。啟用壓縮提高 IIS 與啟用壓縮的瀏覽器之間的傳輸速度。 尤其對(duì)于移動(dòng)設(shè)備,采用壓縮可以提高性能。
僅限靜態(tài)文件
僅限動(dòng)態(tài)應(yīng)用程序響應(yīng)
靜態(tài)文件和動(dòng)態(tài)應(yīng)用程序響應(yīng)
IIS 提供下列壓縮選項(xiàng):
注意: 壓縮動(dòng)態(tài)應(yīng)用程序響應(yīng)會(huì)影響 CPU 資源,因?yàn)?IIS 不緩存動(dòng)態(tài)輸出的壓縮版本。
因?yàn)閯?dòng)態(tài)壓縮會(huì)消耗大量的 CPU 時(shí)間和內(nèi)存資源,所以應(yīng)當(dāng)僅在滿足下列條件的服務(wù)器上使用它:網(wǎng)絡(luò)連接速度很慢,但有多余的 CPU 時(shí)間。
與動(dòng)態(tài)響應(yīng)不同,可以對(duì)壓縮的靜態(tài)響應(yīng)進(jìn)行緩存,同時(shí)不會(huì)降低 CPU 資源的性能。
靜態(tài)文件的優(yōu)化
盡量合并文件的靜態(tài)內(nèi)容(如js文件和css文件)。 這有利于更快地下載此類文件,理想的情況下,合并成一個(gè)單一的JS和CSS文件。
先加載CSS然后加載Javascript
避免在HTML中對(duì)圖片使用Width height, 例如 <img width="400" height="280" src="myimage.jpg" />
代碼的優(yōu)化
確保默認(rèn)下關(guān)閉ViewState,真正需要它時(shí)才啟用。 關(guān)閉ViewState可以從根本上減少頁面的大小,并顯著提高頁面加載時(shí)間。
啟用ASP.NET輸出緩存。 不幸的是,這有可能需要你花時(shí)間研究一個(gè)個(gè)ASPX頁面。
啟用Web service 的輸出緩存。 你的Web service 在任何給定的輸入?yún)?shù)下總是返回相同結(jié)果, 你可以使用這種緩存。
如果你使用了ASP.NET Ajax,確保在web.config 中設(shè)置了 <compilation debug="false"/>。 這避免了客戶端和服務(wù)器端“昂貴的”參數(shù)驗(yàn)證。
工具
使用YSlow來測(cè)量網(wǎng)頁加載時(shí)間。如果有必要我會(huì)介紹如何使用Yslow。在這里先上幾個(gè)截圖,讓大家有一定了解:
FireBug——這是另外一款利器,你可以很容易得到如何使用它的文章。
其他
如果應(yīng)用程序需要從XML反序列化任何數(shù)據(jù)(包括 web services),請(qǐng)預(yù)先使用 Sgen.exe (XML 序列化程序生成器工具)生成程序集。 不使用 XML 序列化程序生成器時(shí),XmlSerializer 在應(yīng)用程序每次運(yùn)行時(shí)為每個(gè)類型生成序列化代碼和一個(gè)序列化程序集。
可以參考下面的文章了解更多關(guān)于SGEN :
http://msdn.microsoft.com/zh-cn/library/bk3w6240%28v=VS.100%29.aspx
參考:http://blogs.msdn.com
原文鏈接:http://www.cnblogs.com/multiplesoftware/archive/2011/02/08/1949809.html?
總結(jié)
以上是生活随笔為你收集整理的如何真正提高ASP.NET网站的性能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中汽协发布车用操作系统开源计划,首个原创
- 下一篇: log4net 在asp.net WEB