六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

微軟建議的ASP優(yōu)化性能28條守則(2)

[摘要]技巧 3:將數(shù)據(jù)和 HTML 緩存在 Web 服務(wù)器的磁盤上 有時(shí),數(shù)據(jù)可能太多,無法都緩存在內(nèi)存中。“太多”只是一個(gè)說法,這要看您想消耗多少內(nèi)存,以及需緩存的項(xiàng)目數(shù)和檢索這些項(xiàng)目的頻率。在任何情況下,如果數(shù)據(jù)太多而無法都緩存在內(nèi)存中,則考慮將數(shù)據(jù)以文本或 XML 文件緩存在 Web 服務(wù)器的硬盤...
技巧 3:將數(shù)據(jù)和 HTML 緩存在 Web 服務(wù)器的磁盤上
有時(shí),數(shù)據(jù)可能太多,無法都緩存在內(nèi)存中!疤唷敝皇且粋(gè)說法,這要看您想消耗多少內(nèi)存,以及需緩存的項(xiàng)目數(shù)和檢索這些項(xiàng)目的頻率。在任何情況下,如果數(shù)據(jù)太多而無法都緩存在內(nèi)存中,則考慮將數(shù)據(jù)以文本或 XML 文件緩存在 Web 服務(wù)器的硬盤上?梢酝瑫r(shí)將數(shù)據(jù)緩存在磁盤和內(nèi)存中,為您的站點(diǎn)建立最適宜的緩存策略。

注意當(dāng)測量單個(gè) ASP 頁的性能時(shí),檢索磁盤上的數(shù)據(jù)可能不一定要比從數(shù)據(jù)庫檢索數(shù)據(jù)更快。但緩存會(huì)降低數(shù)據(jù)庫和網(wǎng)絡(luò)上的負(fù)載。在高負(fù)載的情況下,這樣做可大大改善總體吞吐量。當(dāng)緩存開銷很大的查詢結(jié)果(如多表聯(lián)接或復(fù)合存儲(chǔ)過程)或大的結(jié)果集時(shí),這是非常有效的。與往常一樣,要測試一下幾種方案的優(yōu)劣。

ASP 和 COM 提供一些建立基于磁盤的緩存方案的工具。ADO 記錄集 Save() 和 Open() 函數(shù)保存和裝載磁盤中的記錄集?梢允褂眠@些方法重新編寫上面 Application 數(shù)據(jù)緩存技巧中的代碼示例,用文件的 Save() 代替寫到 Application 對(duì)象中的代碼。

有一些其它組件可以用于文件:

Scripting.FileSystemObject 可使您創(chuàng)建、讀和寫文件。
與 Internet Explorer 一起提供的 Microsoft® XML 解析器 (MSXML) 支持保存和裝載 XML 文檔。
LookupTable 對(duì)象(例如,用在 MSN 上)是從磁盤裝載簡單列表的最好選擇。
最后,應(yīng)考慮將數(shù)據(jù)的表示緩存在磁盤上,而不是數(shù)據(jù)本身。預(yù)先轉(zhuǎn)換的 HTML 可以用 .htm 或 .asp 文件存儲(chǔ)在磁盤上,超級(jí)鏈接可以直接指向這些文件。可以使用商用工具,如 XBuilder,或 Microsoft® SQL Server™ Internet 發(fā)布功能將產(chǎn)生 HTML 的過程自動(dòng)化。或者,您可以將 HTML 代碼片斷放在 .asp 文件中。還可以使用 FileSystemObject 從磁盤讀取 HTML 文件,或使用 XML 盡早轉(zhuǎn)換。

技巧 4:避免將非敏捷的組件緩存在 Application 或 Session 對(duì)象中
盡管將數(shù)據(jù)緩存在 Application 或 Session 對(duì)象中是一個(gè)好的做法,但緩存 COM 對(duì)象卻有嚴(yán)重的陷阱。通常,人們傾向于將經(jīng)常使用的 COM 對(duì)象緩存到 Application 或 Session 對(duì)象中。很遺憾,許多 COM 對(duì)象(包括所有以 Visual Basic 6.0 或更低版本編寫的對(duì)象)當(dāng)存儲(chǔ)在 Application 或 Session 對(duì)象時(shí),會(huì)引起嚴(yán)重的瓶頸。

具體來講,當(dāng)任何不敏捷的組件緩存在 Session 或 Application 對(duì)象時(shí),將引起性能瓶頸。敏捷的組件是被標(biāo)記為 ThreadingModel=Both 的組件,它聚集 Free-threaded marshaler (FTM);或被標(biāo)記為 ThreadingModel=Neutral 的組件。(Neutral 模型是 Windows® 2000 和 COM+ 的新增模型。) 下列組件不是敏捷的:

自由線程的組件(除非它們聚集 FTM)。
單元線程組件。
單線程組件。
配置的組件(Microsoft Transaction Server (MTS)/COM+ 庫和服務(wù)器程序包/應(yīng)用程序)不是敏捷的,除非它們是 Neutral 線程。單元線程組件和其它非敏捷的組件在頁作用域內(nèi)是最適合的(即,它們?cè)趩蝹(gè) ASP 頁上創(chuàng)建和銷毀)。

在 IIS 4.0 中,被標(biāo)記為 ThreadingModel=Both 的組件被認(rèn)為是敏捷的。在 IIS 5.0 中,只有這一點(diǎn)還不夠。組件必須不僅被標(biāo)記 Both,還必須聚集 FTM。有關(guān)敏捷性的文章講述了如何使以 Active Template Library 編寫的 C++ 組件聚集 FTM。要注意如果組件緩存界面指針,那么那些指針本身必須是敏捷的,或必須存儲(chǔ)在 COM 共用界面表 (GIT) 中。如果您不能重新編譯 Both 線程組件以聚集 FTM,那么您可以將組件標(biāo)記為 ThreadingModel=Neutral;蛘,如果您不想讓 IIS 執(zhí)行敏捷性檢查(因此,您可以允許非敏捷的組件存儲(chǔ)在 Application 或 Session 作用域中),您可以在配置數(shù)據(jù)庫中將 AspTrackThreadingModel 設(shè)置為 True。不建議更改 AspTrackThreadingModel。

如果您想將以 Server.CreateObject 創(chuàng)建的非敏捷的組件存儲(chǔ)在 Application 對(duì)象中,IIS 5.0 將出現(xiàn)一個(gè)錯(cuò)誤。您可以在 Global.asa 中使用 <object runat=server scope=application ...> 避免這一錯(cuò)誤,但不建議這樣做,因?yàn)檫@會(huì)導(dǎo)致匯集和串行化,關(guān)于這一點(diǎn)將在下面講述。

如果您緩存非敏捷的組件會(huì)出現(xiàn)什么毛病?緩存在 Session 對(duì)象中的非敏捷的組件將 Session 鎖定于 ASP 工作者線程。ASP 維護(hù)一個(gè)工作者線程池來處理請(qǐng)求。通常情況下,一個(gè)新請(qǐng)求總是由第一個(gè)可用的工作者線程來處理。如果 Session 被鎖定于一個(gè)線程,那么請(qǐng)求必須等到其相關(guān)的線程可用為止。這里有一個(gè)類比,也許會(huì)有所幫助:您去一家超級(jí)市場,挑選了一些商品,并在 #_3 收款臺(tái)付款。其后,每當(dāng)您在那家超級(jí)市場為商品付款時(shí),您總是必須在 #_3 收款臺(tái)付款,即使其它收款臺(tái)前排隊(duì)的人較少或者沒有人排隊(duì),也是如此。

將非敏捷的組件存儲(chǔ)在 Application 作用域?qū)π阅艿挠绊懮踔粮鼔。ASP 必須創(chuàng)建一個(gè)特殊的線程運(yùn)行存儲(chǔ)在 Application 作用域中的非敏捷組件。這會(huì)有兩個(gè)結(jié)果:所有調(diào)用都必須匯集到此線程,且所有調(diào)用都排成長隊(duì)!皡R集”的意思是參數(shù)必須存儲(chǔ)在內(nèi)存的共享區(qū)域;執(zhí)行一個(gè)開銷很大的到特殊線程的上下文切換;執(zhí)行組件的方法;將結(jié)果匯集到共享區(qū)域;執(zhí)行另一個(gè)開銷很大的上下文切換,將控制返回到原始的線程。“串行化”意思是指每次只運(yùn)行一個(gè)方法。兩個(gè)不同的 ASP 工作者線程不能同時(shí)在共享組件上執(zhí)行多個(gè)方法。這樣就杜絕了并發(fā)性,特別是在多處理器計(jì)算機(jī)上。更糟的是,所有非敏捷的 Application 作用域的組件共享一個(gè)線程(主機(jī) STA),因此串行化的影響甚至更顯著。

如之奈何?下面是一些一般的規(guī)則。如果您使用 Visual Basic (6.0) 或更早版本編寫對(duì)象,那么不要將它們緩存在 Application 或 Session 對(duì)象中。如果您不知道對(duì)象的線程模型,不要緩存它。不要緩存非敏捷的對(duì)象,而應(yīng)在每個(gè)頁面創(chuàng)建和釋放它們。對(duì)象直接在 ASP 工作者線程上運(yùn)行,因此沒有匯集或串行化。如果 COM 對(duì)象在 IIS 服務(wù)器上運(yùn)行,且如果它們不花長時(shí)間初始化和刪除,性能尚可。注意單線程對(duì)象不應(yīng)該這樣使用。小心 - VB 可創(chuàng)建單線程對(duì)象!如果您必須這樣使用單線程對(duì)象(如 Microsoft Excel 電子表格),別指望會(huì)有很高的吞吐量。

當(dāng) ADO 被標(biāo)記為自由線程,ADO 記錄集可以安全地緩存。要將 ADO 標(biāo)記為自由線程,使用 Makfre15.bat 文件,該文件通常位于目錄 \\Program Files\Common\System\ADO 中。

警告 如果您使用 Microsoft Access 作為數(shù)據(jù)庫,不應(yīng)將 ADO 標(biāo)記為自由線程的。ADO 記錄集也必須切斷連接。一般來說,如果您不能控制站點(diǎn)中的 ADO 配置(例如,您是一個(gè)獨(dú)立的軟件廠商 [ISV],向管理他們自己的配置客戶銷售 Web 應(yīng)用程序),最好不要緩存記錄集。

詞典組件也是敏捷的對(duì)象。LookupTable 從數(shù)據(jù)文件中裝載其數(shù)據(jù),可用于組合框數(shù)據(jù)和配置信息。Duwamish Books 中的 PageCache 對(duì)象可提供詞典語法,Caprock Dictionary 也可提供。這些對(duì)象或其派生對(duì)象可以構(gòu)成有效緩存策略的基礎(chǔ)。注意 Scripting.Dictionary 對(duì)象不是敏捷的,不應(yīng)該存儲(chǔ)在 Application 或 Session 作用域中。




主站蜘蛛池模板: 自拍网视频 | 手机国产乱子伦精品视频 | 性刺激免费视频观看在线观看 | 日本一道在线 | 五级床片全部免费播放 | 五月综合激情视频在线观看 | 天天干天天射天天爽 | 色综合网站在线 | 在线视频第一页 | 五月婷婷影院 | 欧美在线观看第一页 | 桃花综合久久久久久久久久网 | 婷婷丁香综合网 | 午夜亚洲一区二区福利 | 欧美性生活一级 | 中文字幕在线不卡视频 | 日本高清不卡网站免费 | 青娱乐欧美视频 | 午夜欧美精品久久久久久久久 | 日本大片在线 | 欧美性开放视频 | 亚洲第一天堂 | 天天爱天天做久久天天狠狼 | 天天爱天天做色综合 | 色伊人久久 | 日本大片在线 | 青青青国产精品手机在线观看 | 人禽交在线视频免费播放 | 综合玖玖 | 五月激情啪啪网 | 欧美偷拍小视频 | 天天都色 | 网友自拍亚洲 | 在线视频一区二区三区在线播放 | 日韩在线视频二区 | 小小小小视频高清日本 | 手机看片日韩欧美 | 日韩毛片免费视频 | 中文字幕在线乱人伦 | 三级黄色在线视频 | 性欧美人 |