Jscriptでキャッシュ技術を使用した実際のコード
2969 ワード
VBScriptを使用する場合、アプリケーションキャッシュ配列を使用してキャッシュを実装できます.例:
プログラムコード:
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.
MicrosoftのKnowledge Baseでは、次のような理由で特定できます.
参照内容:
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を追加する必要があります.
プログラムコード:
クラスの実装は次のとおりです.
プログラムコード:
Dim rs,arr
rs.Open conn,sql,1,1
arr=rs.GetRows()
Application.Lock()
Application("cache")=arr
Applicatoin.UnLock()
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.
MicrosoftのKnowledge Baseでは、次のような理由で特定できます.
参照内容:
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を追加する必要があります.
プログラムコード:
クラスの実装は次のとおりです.
<br>/**
<br> Title: cache operate class
<br> Description: operate system cache
<br> @Copyright: Copyright (c) 2007
<br> @Author: xujiwei
<br> @Website: http://www.xujiwei.cn/
<br> @Version: 1.0
<br> @Time: 2007-06-29 12:03:45
<br>**/
<br>var xbsCache = {
<br> get: function(key) {
<br> return Application.StaticObjects("xbsCache").Item("Cache."+key);
<br> },
<br> put: function(key, data) {
<br> Application.Lock();
<br> Application.StaticObjects("xbsCache").Item("Cache."+key)=data;
<br> Application.UnLock();
<br> },
<br> remove: function(key) {
<br> Application.Lock();
<br> Application.StaticObjects("xbsCache").Remove("Cache."+key);
<br> Application.UnLock();
<br> },
<br> clear: function() {
<br> Application.Lock();
<br> Application.StaticObjects("xbsCache").RemoveAll();
<br> Application.UnLock();
<br> }
<br>}
<br>
は、ASPでJscriptを使用した場合のキャッシュ実装を完了する.