在編寫ASP程序時,為了提高ASP程序的效率,減少對數據庫的連接和查詢,通常采用緩存技術來緩存一些需要從數據庫中讀取的數據,接下來錯新技術頻道帶你一起來看看吧!
例:
程序代碼:
在VBScript里,數組是可以存到Application對象里的,但是如果ASP的語言選擇為JScript的話,那么就有些不妙了,我們在使用Application儲存一個數組時,會出現以下錯誤:
引用內容:
Application?object,?ASP?0197?(0x80004005)
Disallowed?object?use
Cannot?add?object?with?apartment?model?behavior?to?the?application?intrinsic?object.
在微軟的知識庫可以找到具體原因如下:
引用內容:
JScript?arrays?are?considered?to?be?"Apartment"?COM?components.?Only?Component?Object?Model?(COM)?components?that?aggregate?the?Free?Threaded?Marshaler?(FTM)?can?be?assigned?to?Application?scope?within?an?Internet?Information?Server?(IIS)?5.0?ASP?page.?Because?an?"Apartment"?component?cannot?aggregate?the?FTM?(it?cannot?allow?a?direct?pointer?to?be?passed?to?its?clients,?unlike?a?"Both?with?FTM"?object),?JScript?arrays?do?not?aggregate?the?FTM.?Therefore,?JScript?arrays?cannot?be?assigned?to?Application?scope?from?an?ASP?page.
以上描述引用自:PRB:?Error?When?You?Store?a?JScript?Array?in?Application?Scope?in?IIS?5.0
因此,為了解決這個問題,在Google里找了一大會,終于找到了一篇文章《Application對象的Contents和StaticObjects做Cache的一些結論》,解決了這個問題,方法就是使用Application.StaticObject存放一個Scripting.Dictionary對象,然后再使用Scripting.Dictionary對象來存放需要緩存的數據。
據此,寫了一個操作緩存的類,實現put、get、remove和clear方法,使用之前,需要在global.asa中添加一個object:
程序代碼:
<object?id="xbsCache"?runat="server"?scope="Application"?progid="Scripting.Dictionary"></object>
類的實現如下:
?
?
?
?
如此,就完成了ASP中使用JScript時的緩存實現,希望錯新技術頻道小編為您整理的內容,可以為大家提供到幫助。
?
?
新聞熱點
疑難解答