【发布时间】:2009-08-10 16:52:15
【问题描述】:
我尝试在经典 ASP 站点中实现不同的缓存实现,以便在流量大时卸载数据库。
我的做法是这样的:
在 global.asa 中创建一个全局 HashTable 对象,我稍后会在其中存储 jscript 对象
<object id="SIZE_LIST" progid="System.Collections.HashTable" runat="Server" scope="Application"></object>
这给了我一个全局哈希表对象,我在某些时间间隔替换哈希表的内容。大小只会略有不同,但我每次都会 .Remove() 和 .Add() 所有对象。
这很好用,除了在一定时间后,应用程序的内存分配变得很高,导致会话的不合理行为。它将“忘记”会话,但不会调用 global.asa 中的 OnSessionStart()。因此,给访问者留下一个空的 Session-collection。
我能以某种方式改进内存重新分配过程吗?有没有更好的对象缓存方法?
我尝试过使用带有 json 序列化数据的纯文本文件,但是反序列化的开销很大。我考虑过二进制序列化,但我不确定它在经典 ASP 中是否可行。
【问题讨论】:
标签: optimization caching asp-classic memory-leaks