微軟建議的ASP優(yōu)化性能28條守則(8)
發(fā)表時間:2024-06-08 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]技巧 22:盡可能使用 Server.Transfer 代替 Response.Redirect Response.Redirect 讓瀏覽器請求另一個頁面。此函數(shù)常用來將用戶重定向到一個登錄或錯誤頁面。因為重定向強制請求新頁面,結(jié)果是瀏覽器必須到 Web 服務(wù)器往返兩次,且 Web 服務(wù)器必須多...
技巧 22:盡可能使用 Server.Transfer 代替 Response.Redirect
Response.Redirect 讓瀏覽器請求另一個頁面。此函數(shù)常用來將用戶重定向到一個登錄或錯誤頁面。因為重定向強制請求新頁面,結(jié)果是瀏覽器必須到 Web 服務(wù)器往返兩次,且 Web 服務(wù)器必須多處理一個請求。IIS 5.0 引入了一個新的函數(shù) Server.Transfer,它將執(zhí)行轉(zhuǎn)移到同一臺服務(wù)器上的另一個 ASP 頁。這樣就避免多余的瀏覽器-Web-服務(wù)器的往返,從而改善了總體系統(tǒng)性能以及縮短了用戶的響應(yīng)時間。檢查“重定向”中的“新的方向”,上面應(yīng)該是 Server.Transfer 和 Server.Execute。
另請參見 Leveraging ASP in IIS 5.0,了解 IIS 5.0 和 ASP 3.0 新功能的完整列表。
技巧 23:在目錄 URL 中使用后斜杠
一個相關(guān)的技巧是確保在指向目錄的 URL 中使用后斜杠 (/)。如果您省略了后斜杠,瀏覽器就會向服務(wù)器發(fā)出請求,只是為了告訴服務(wù)器,它在請求目錄。瀏覽器就會發(fā)出第二個請求,將斜杠附加到 URL 后面,只有此后,服務(wù)器才能以該目錄的默認(rèn)文檔或目錄列表(如果沒有默認(rèn)文檔且啟用了目錄瀏覽的話)響應(yīng)。附加斜杠可省去第一個、無用的住返。為便于用戶閱讀,可以省略顯示名稱中的后斜杠。
例如,寫:
<a href=?http://msdn.microsoft.com/workshop/? title=?MSDN Web
Workshop?>http://msdn.microsoft.com/workshop</a>
這也適用于指向 Web 站點上主頁的 URL:使用下面的:<a href=?http://msdn.microsoft.com/?>,而不使用 <a href=?http://msdn.microsoft.com?>。
技巧 24:避免使用服務(wù)器變量
訪問服務(wù)器變量會使 Web 站點向服務(wù)器發(fā)出一個特殊請求,并收集所有服務(wù)器變量,而不只是您請求的那個變量。這種情況類似于,在發(fā)霉的閣樓上,在一個文件夾中查找某個文件。當(dāng)您想要找那個文件時,您必須去閣樓上,先找到文件夾,然后才能找到這份文件。當(dāng)您請求服務(wù)器變量時,發(fā)生的情況是一樣的 - 您第一次請求服務(wù)器變量時,就會使性能受到影響。后面的對其它服務(wù)器變量的請求,則不會對性能產(chǎn)生影響。
決不要訪問非限定的 Request 對象(例如,Request("Data"))。對于不在 Request.Cookies、Request.Form、Request.QueryString 或 Request.ClientCertificate 中的項目,則隱式調(diào)用 Request.ServerVariables。Request.ServerVariables 集合比其它集合慢得多。
技巧 25:升級到最新和最出色的
系統(tǒng)組件是恒定的,我們建議您將它們升級到最新和最好的配置。最好升級到 Windows 2000(因此,也應(yīng)升級到 IIS 5.0、ADO 2.5、MSXML 2.5、Internet Explorer 5.0、VBScript 5.1 和 JScript 5.1)。在多處理器計算機上,實施 IIS 5.0 和 ADO 2.5 可顯著改善性能。在 Windows 2000 下,ASP 可以很好地擴展到四個處理器或更多,而在 IIS 4.0 下,ASP 的擴展性不能超出兩個處理器。在應(yīng)用程序中使用的腳本代碼和 ADO 越多,升級到 Windows 2000 之后,性能的改善就會越多。
如果目前還不能升級到 Windows 2000,您可以升級到 SQL Server、ADO、VBScript 和 JScript、MSXML、Internet Explorer 和 NT 4 Service Packs 的最新版本。它們均可提高性能和可靠性。
技巧 26:優(yōu)化 Web 服務(wù)器
有多種 IIS 優(yōu)化參數(shù)可以改善站點性能。例如,對于 IIS 4.0,我們常常發(fā)現(xiàn),增加 ASP ProcessorThreadMax 參數(shù)(參見 IIS 文檔)可以顯著改善性能,特別是在傾向于等待后端資源(如數(shù)據(jù)庫)或其它中間產(chǎn)品(如屏幕刷)的站點上。在 IIS 5.0 中,您可能發(fā)現(xiàn)啟用 ASP Thread Gating 比查找一個 AspProcessorThreadMax 最佳設(shè)置效率更高,這一點現(xiàn)在已為大家所熟知。
有關(guān)較好的參考資料,參見下面的優(yōu)化 IIS。
最佳的配置設(shè)置取決于(其中一些因素)應(yīng)用程序代碼、運行所在的系統(tǒng)硬件和客戶機工作負(fù)荷。找到最佳設(shè)置的唯一方法是進(jìn)行性能測試,這是我們在下一個技巧中所要討論的。
技巧 27:進(jìn)行性能測試
正如我們在前面已經(jīng)講過,性能是一個特征。如果您想要改善站點的性能,那么就制定一個性能目標(biāo),然后逐步改進(jìn),直到達(dá)到目標(biāo)為止。不要,就不進(jìn)行任何性能測試。通常,在項目結(jié)束時,再作必需的結(jié)構(gòu)調(diào)整已經(jīng)為時太晚,您的客戶將為此感到失望。將性能測試作為您日常測試的一部分來進(jìn)行?梢詫蝹組件分別進(jìn)行性能測試,如針對 ASP 頁或 COM 對象,或?qū)⒄军c作為一個整體來測試。
許多人使用單個瀏覽器請求頁面,來測試 Web 站點的性能。這樣做就會給您一個感覺,即站點的響應(yīng)能力很好,但這樣做實際上并不能告訴您在負(fù)載條件下站點的性能如何。
一般情況下,要想準(zhǔn)確地測試性能,您需要一個專門的測試環(huán)境。此環(huán)境應(yīng)包括硬件,其處理器速度、處理器數(shù)量、內(nèi)存、磁盤、網(wǎng)絡(luò)配置等方面與生產(chǎn)環(huán)境的硬件相似。其次,您必須指定客戶機的工作負(fù)荷:有多少同時的用戶,他們發(fā)出請求的頻率,他們點擊頁面的類型等等。如果您沒有站點實際使用情況的數(shù)據(jù),您必須估計一下使用的情況。最后,您需要一個可以模擬預(yù)期客戶機工作負(fù)荷的工具。有了這些工具,您就可以開始回答諸如“如果我有 N 個同時的用戶,那么需要多少服務(wù)器?”之類的問題。您還可以找出出現(xiàn)瓶頸的原因,并以此為目標(biāo)進(jìn)行優(yōu)化。
下面列出了一些好的 Web 負(fù)載測試工具。我們特別推薦 Microsoft Web Application Stress (WAS) 工具包。WAS 可使您記錄測試腳本,然后模擬數(shù)百或成千上萬個用戶訪問 Web 服務(wù)器。WAS 報告很多統(tǒng)計信息,包括每秒鐘的請求數(shù),響應(yīng)時間分布情況和錯誤計數(shù)。WAS 有豐富的客戶機界面和基于 Web 的界面兩種,Web 界面可使您進(jìn)行遠(yuǎn)程測試。
一定要閱讀 IIS 5.0 Tuning Guide。