ASP.net 4.0片段缓存使用自定义缓存提供程序生成的密钥

时间:2012-02-22 23:15:19

标签: asp.net caching

我已经实现了一个基于磁盘的自定义缓存提供程序,除了一个问题外,它工作正常。当我在aspx Pages中使用提供程序时,生成的密钥来自“a2 /../../ default.aspx”,这很好。当我在用户控件中使用相同的提供程序时,生成的密钥的格式为“lfffffff40e80 ....”,这样就可以了,直到应用程序池循环使用。然后,对于相同的用户控件,生成(但不相同)类似的密钥,这意味着无法使用新密钥访问兑现的用户控件,并且在磁盘高速缓存中为同一用户控件生成新条目。

这是自定义缓存提供程序与用户控件一起使用的方式吗?当应用程序池循环使用时,如何为用户控件生成相同的密钥?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

我不相信有一种方法可以控制缓存键的创建方式 - 对于用户控件,它是一个包含组合多个哈希代码和/或包含堆栈跟踪哈希等的涉及的进程。因为总是哈希代码一些工厂对象用于缓存键的计算,你将在新的app-domain中获得一个不同的键(在app pool recycle之后),因为对象的哈希码会有所不同。

因此,即使在应用程序池回收后创建了新的缓存副本,我也没有看到任何重大问题 - 因为您需要调整该时间以及(由于应用程序启动代码需要,因此无法进行频繁的应用程序池回收)每次回收后运行。)

顺便说一下,您可以在不同页面上为多个用户控件实例提供Shared个缓存副本。