我试图在传统的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