微軟建議的ASP性能優(yōu)化28條守則(2)
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
技巧 21:啟用瀏覽器和代理緩存 在默認(rèn)情況下,asp 禁止在瀏覽器和代理中進(jìn)行緩存。這是有意義的,因?yàn)榫蛯?shí)質(zhì)而言 asp 頁面是動(dòng)態(tài)的,上面有隨時(shí)間不斷變化的潛在信息。如果頁面不要求在每個(gè)視圖上進(jìn)行刷新,您應(yīng)啟用瀏覽器和代理緩存。這可使瀏覽器和代理在一定的時(shí)間內(nèi)使用頁面的“緩存”副本,您可以控制時(shí)間的長短。緩存可以大大減輕服務(wù)器上的負(fù)載,縮短用戶的等待時(shí)間。 哪一種動(dòng)態(tài)頁面可作為要緩存的頁面呢?下面舉一些例子: 天氣預(yù)報(bào)頁面,在此頁面上,每隔 5 分鐘更新一次天氣預(yù)報(bào)。 瀏覽器緩存由 http“過期”報(bào)頭控制,該報(bào)頭由 web 服務(wù)器發(fā)送給瀏覽器。asp 提供兩個(gè)簡單的機(jī)制發(fā)送此報(bào)頭。要設(shè)置頁面使其過多少分鐘后到期,則應(yīng)設(shè)置 response.expires 屬性。下面的例子告訴瀏覽器內(nèi)容在 10 分鐘內(nèi)過期: <% response.expires = 10 %> 若將 response.expires 設(shè)置為負(fù)數(shù)或 0,則禁用緩存。一定要使用大的負(fù)數(shù),如 -1000(略多于一天),以避免服務(wù)器和瀏覽器時(shí)鐘之間的不匹配。第二個(gè)屬性 response.expiresabsolute 將使您設(shè)置內(nèi)容過期的具體時(shí)間: <% response.expiresabsolute = #may 31,2001 13:30:15# %> 您可以不使用 response 對象設(shè)置過期時(shí)間,而將 標(biāo)記寫進(jìn) html,通常寫在 html 文件的 部分。一些瀏覽器將遵照此指令,而代理則不然。最后,您可以使用 response.cachecontrol 屬性,指示其內(nèi)容是否可以讓 http 代理緩存。若將此屬性設(shè)置為“public”,代理就可以緩存此內(nèi)容。 <% response.cachecontrol = ?public? %> 在默認(rèn)情況下,此屬性被設(shè)置為“private”。注意,對于顯示某用戶特定數(shù)據(jù)的頁面,不應(yīng)啟用代理緩存,因?yàn)榇砜赡芙o用戶提供屬于其他用戶的頁面。 #p# 技巧 22:盡可能使用 server.transfer 代替 response.redirect response.redirect 讓瀏覽器請求另一個(gè)頁面。此函數(shù)常用來將用戶重定向到一個(gè)登錄或錯(cuò)誤頁面。因?yàn)橹囟ㄏ驈?qiáng)制請求新頁面,結(jié)果是瀏覽器必須到 web 服務(wù)器往返兩次,且 web 服務(wù)器必須多處理一個(gè)請求。iis 5.0 引入了一個(gè)新的函數(shù) server.transfer,它將執(zhí)行轉(zhuǎn)移到同一臺(tái)服務(wù)器上的另一個(gè) asp 頁。這樣就避免多余的瀏覽器-web-服務(wù)器的往返,從而改善了總體系統(tǒng)性能以及縮短了用戶的響應(yīng)時(shí)間。檢查“重定向”中的“新的方向”,上面應(yīng)該是 server.transfer 和 server.execute。 另請參見 leveraging asp in iis 5.0,了解 iis 5.0 和 asp 3.0 新功能的完整列表。 技巧 23:在目錄 url 中使用后斜杠 一個(gè)相關(guān)的技巧是確保在指向目錄的 url 中使用后斜杠 (/)。如果您省略了后斜杠,瀏覽器就會(huì)向服務(wù)器發(fā)出請求,只是為了告訴服務(wù)器,它在請求目錄。瀏覽器就會(huì)發(fā)出第二個(gè)請求,將斜杠附加到 url 后面,只有此后,服務(wù)器才能以該目錄的默認(rèn)文檔或目錄列表(如果沒有默認(rèn)文檔且啟用了目錄瀏覽的話)響應(yīng)。附加斜杠可省去第一個(gè)、無用的住返。為便于用戶閱讀,可以省略顯示名稱中的后斜杠。 例如,寫: workshop?>http://msdn.microsoft.com/workshop 這也適用于指向 web 站點(diǎn)上主頁的 url:使用下面的:,而不使用 。 技巧 24:避免使用服務(wù)器變量 訪問服務(wù)器變量會(huì)使 web 站點(diǎn)向服務(wù)器發(fā)出一個(gè)特殊請求,并收集所有服務(wù)器變量,而不只是您請求的那個(gè)變量。這種情況類似于,在發(fā)霉的閣樓上,在一個(gè)文件夾中查找某個(gè)文件。當(dāng)您想要找那個(gè)文件時(shí),您必須去閣樓上,先找到文件夾,然后才能找到這份文件。當(dāng)您請求服務(wù)器變量時(shí),發(fā)生的情況是一樣的 - 您第一次請求服務(wù)器變量時(shí),就會(huì)使性能受到影響。后面的對其它服務(wù)器變量的請求,則不會(huì)對性能產(chǎn)生影響。 決不要訪問非限定的 request 對象(例如,request("data"))。對于不在 request.cookies、request.form、request.querystring 或 request.clientcertificate 中的項(xiàng)目,則隱式調(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)。在多處理器計(jì)算機(jī)上,實(shí)施 iis 5.0 和 ado 2.5 可顯著改善性能。在 windows 2000 下,asp 可以很好地?cái)U(kuò)展到四個(gè)處理器或更多,而在 iis 4.0 下,asp 的擴(kuò)展性不能超出兩個(gè)處理器。在應(yīng)用程序中使用的腳本代碼和 ado 越多,升級到 windows 2000 之后,性能的改善就會(huì)越多。 如果目前還不能升級到 windows 2000,您可以升級到 sql server、ado、vbscript 和 jscript、msxml、internet explorer 和 nt 4 service packs 的最新版本。它們均可提高性能和可靠性。 技巧 26:優(yōu)化 web 服務(wù)器 有多種 iis 優(yōu)化參數(shù)可以改善站點(diǎn)性能。例如,對于 iis 4.0,我們常常發(fā)現(xiàn),增加 asp processorthreadmax 參數(shù)(參見 iis 文檔)可以顯著改善性能,特別是在傾向于等待后端資源(如數(shù)據(jù)庫)或其它中間產(chǎn)品(如屏幕刷)的站點(diǎn)上。在 iis 5.0 中,您可能發(fā)現(xiàn)啟用 asp thread gating 比查找一個(gè) aspprocessorthreadmax 最佳設(shè)置效率更高,這一點(diǎn)現(xiàn)在已為大家所熟知。 有關(guān)較好的參考資料,參見下面的優(yōu)化 iis。 最佳的配置設(shè)置取決于(其中一些因素)應(yīng)用程序代碼、運(yùn)行所在的系統(tǒng)硬件和客戶機(jī)工作負(fù)荷。找到最佳設(shè)置的唯一方法是進(jìn)行性能測試,這是我們在下一個(gè)技巧中所要討論的。 技巧 27:進(jìn)行性能測試 正如我們在前面已經(jīng)講過,性能是一個(gè)特征。如果您想要改善站點(diǎn)的性能,那么就制定一個(gè)性能目標(biāo),然后逐步改進(jìn),直到達(dá)到目標(biāo)為止。不要,就不進(jìn)行任何性能測試。通常,在項(xiàng)目結(jié)束時(shí),再作必需的結(jié)構(gòu)調(diào)整已經(jīng)為時(shí)太晚,您的客戶將為此感到失望。將性能測試作為您日常測試的一部分來進(jìn)行??梢詫蝹€(gè)組件分別進(jìn)行性能測試,如針對 asp 頁或 com 對象,或?qū)⒄军c(diǎn)作為一個(gè)整體來測試。 許多人使用單個(gè)瀏覽器請求頁面,來測試 web 站點(diǎn)的性能。這樣做就會(huì)給您一個(gè)感覺,即站點(diǎn)的響應(yīng)能力很好,但這樣做實(shí)際上并不能告訴您在負(fù)載條件下站點(diǎn)的性能如何。 一般情況下,要想準(zhǔn)確地測試性能,您需要一個(gè)專門的測試環(huán)境。此環(huán)境應(yīng)包括硬件,其處理器速度、處理器數(shù)量、內(nèi)存、磁盤、網(wǎng)絡(luò)配置等方面與生產(chǎn)環(huán)境的硬件相似。其次,您必須指定客戶機(jī)的工作負(fù)荷:有多少同時(shí)的用戶,他們發(fā)出請求的頻率,他們點(diǎn)擊頁面的類型等等。如果您沒有站點(diǎn)實(shí)際使用情況的數(shù)據(jù),您必須估計(jì)一下使用的情況。最后,您需要一個(gè)可以模擬預(yù)期客戶機(jī)工作負(fù)荷的工具。有了這些工具,您就可以開始回答諸如“如果我有 n 個(gè)同時(shí)的用戶,那么需要多少服務(wù)器?”之類的問題。您還可以找出出現(xiàn)瓶頸的原因,并以此為目標(biāo)進(jìn)行優(yōu)化。 下面列出了一些好的 web 負(fù)載測試工具。我們特別推薦 microsoft web application stress (was) 工具包。was 可使您記錄測試腳本,然后模擬數(shù)百或成千上萬個(gè)用戶訪問 web 服務(wù)器。was 報(bào)告很多統(tǒng)計(jì)信息,包括每秒鐘的請求數(shù),響應(yīng)時(shí)間分布情況和錯(cuò)誤計(jì)數(shù)。was 有豐富的客戶機(jī)界面和基于 web 的界面兩種,web 界面可使您進(jìn)行遠(yuǎn)程測試。 一定要閱讀 iis 5.0 tuning guide。 技巧 28:閱讀資源鏈接 下面是一些與性能有關(guān)的出色的資源鏈接。如果您想了解有關(guān)信息,請閱讀 developing scalable web applications。 資源 優(yōu)化 asp 腳本 got any cache? nancy winnick cluts 著 maximizing the performance of your active server pages,nancy winnick cluts 著 15 seconds: performance section enhancing performance in asp - part i,wayne plourde 著 when is better worse? weighing the technology trade-offs,nancy winnick cluts 著 speed and optimization resources,charles carroll 著 優(yōu)化 iis the art and science of web server tuning with internet information services 5.0 leveraging asp in iis 5.0,j.d. meier 著 tuning iis 4.0 for high volume sites,michael stephenson 著 tuning internet information server performance,mike moore 著 navigating the maze of settings for web server performance optimization,todd wanke 著 managing internet information server 4.0 for performance,hans hugli 著 ado 和 sql server top ten tips: accessing sql through ado and asp,j.d. meier 著 improve the performance of your mdac application,suresh kannan 著 pooling in the microsoft data access components,leland ahlbeck 和 don willits 合著 sql server: performance benchmarks and guides improving the performance of data access components with iis 4.0,leland ahlbeck 著 microsoft data access components (mdac) and activex data objects (ado) performance tips,leland ahlbeck 著 microsoft sql server 7.0 practical performance tuning and optimization - the server perspective,damien lindauer 著 microsoft sql server 7.0 practical performance tuning and optimization - the application perspective,damien lindauer 著 accessing recordsets over the internet,dino esposito 著 asp 組件和線程模型 asp component guidelines,j.d. meier 著 q243548: info: design guidelines for vb components under asp threading models explained,nancy winnick cluts 著 so happy together? using activex components with active server pages,nancy winnick cluts 著 developing active server components with atl,george reilly 著 agility in server components,neil allain 著 building high-performance middle-tier components with c++,jon flanders 著 active server pages and com apartments,don box 著 house of com: active server pages,don box 著 house of com: contexts,don box 著 house of com: performance trade-offs of the windows 2000 component execution environment,don box 著 building com components that take full advantage of visual basic and scripting,ivo salmre 著 component design principles for mts 詞典組件 creating a page cache object,robert coleridge 著 abridging the dictionary object: the asp team creates a lookup-table object,robert carter 著 caprock dictionary site server commerce edition includes a dictionary component 會(huì)話狀態(tài) q175167: howto: persisting values without sessions q157906: howto: how to maintain state across pages with vbscript xml-based persistence behaviors fix web farm headaches,aaron skonnard 著 house of com: stateless programming,don box 著 性能和擴(kuò)展性 blueprint for building web sites using the microsoft windows dna platform server performance and scalability killers,george reilly 著 microsoft visual studio scalability center fitch & mather stocks 2000 tuning the fmstocks application high-performance visual basic apps,ken spencer 著 duwamish books,phase 4 top windows dna performance mistakes and how to prevent them,gary geiger 和 jon pulsipher 合著 building from static html to high-performance web-farms,shawn bice 著 工具 microsoft web application stress tool i can't stress it enough -- load test your asp application,j.d. meier 著 windows dna performance kit monitoring events in distributed applications using visual studio analyzer,mai-lan tomsen 著 書目 professional active server pages 3.0,wrox press(特別是第 26 章:optimizing asp performance,george reilly 和 matthew gibbs 合著)。 microsoft internet information services 5.0 resource guide(與 windows 2000 server resource kit 在一起),microsoft press。 microsoft internet information server resource kit(用于 iis 4.0),microsoft press。 programming distributed applications with com and microsoft visual basic 6.0,ted pattison 著,microsoft press。 effective com,don box、keith brown、tim ewald 和 chris sells 合著;addison-wesley。 developing web usability: the practice of simplicity,jakob nielsen 著,new riders。 asp web 站點(diǎn) microsoft technet for iis learnasp.com 4guysfromrolla.com 15seconds.com asptoday.com asp101.com asplists.com。許多專業(yè)的郵件列表包括: fast code! asp 樣式 asp best practices,george reilly 著 asp quick lessons,charles carroll 著 planning for asp,john meade 著 asp guidelines,j.d. meier 著 xml inside xml performance,chris lovett 著 inside msxml3 performance,chris lovett 著 該文章在 2010/7/3 13:25:30 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |