我試圖在傳統的ASP站點中實現不同的緩存實現,以便在繁忙流量期間卸載數據庫。在傳統的ASP內存泄漏中實現對象緩存
我的做法是這樣的:
,我後來在商店的JScript對象中
<object id="SIZE_LIST" progid="System.Collections.HashTable" runat="Server" scope="Application"></object>
這給了我一個哈希表全球對象創建Global.asa中的一個全局Hashtable對象,我以特定的時間間隔替換HashTable的內容。大小隻會有所不同,但我會做。每次刪除()和.Add()所有對象。
這很有效,除此之外,經過一段時間後,應用程序的內存分配會變得很高,從而導致會話的非理性行爲。它會「忘記」會話,但不會在global.asa中調用OnSessionStart()。因此,爲訪客留下一個空的會話集合。
我能以某種方式改善內存重新分配過程嗎?有沒有更好的對象緩存方法?
我曾嘗試使用純文本文件與json序列化的數據,但反序列化的是很多開銷。我想過二進制序列化,但我不確定在傳統的ASP中是否有可能。
afaik Scripting.Dictionary和IISSample.LookupTable綁定到它們只能存儲原始數據類型(字符串和數字)的事實。這會讓我再次需要序列化。當然,我不需要反序列化所有的東西。 LookupTable也不支持動態變化(我知道我們有Scripting.Dictionary的問題,但我不能肯定地說) – jishi 2009-08-11 07:25:39
我想這是問題:http://www.4guysfromrolla.com /aspfaqs/ShowFAQ.asp?FAQID=129 – jishi 2009-08-11 07:30:55
Scripting.Dictionary可以存儲您喜歡的任何值。對象引用*和*原始值。僅限制:鍵必須是字符串。 – Tomalak 2009-08-11 08:54:01