我正在asp.net中编写一个webcontrol,它必须从API获取信息。获取最新信息并不重要,检索信息的速度非常慢,所以我宁愿缓存信息并每5分钟更新一次。
使用Context.Cache可能有风险,因为可能有人可能会使用相同的名称,但我无法找到另一种在控件中进行缓存的方法。
有没有人有其他想法?
(使用asp.net 2.0)。
答案 0 :(得分:0)
听起来像Context.Cache正是您存储此类信息所需要的。缓存对象已本地化到您的应用程序,因此只能由应用程序中的其他代码进行更改。
你总是可以给你的缓存密钥一个非常长的,可能无用的名字等,并将该密钥存储在你的班级中......
Private const CacheKey as String = "e92a627b-3a9f-46da-a182-d73b44fe87ad" ' A random guid
Cache.Item(CacheKey) = TheRefreshedData ' etc
当我写这个答案时,我意识到你可能正在谈论你的控制器在别人的应用程序中被重复使用......因为在你的控件中被重新分配或提供下载。在这种情况下,您始终可以将缓存键与控件前缀为“明智”唯一...
Private const CacheKey As String = "MyCompany.MyControl.MyData"
Cache.Item(CacheKey) = TheRefreshedData ' etc
无论哪种方式,你都应该能够提出一些相当长的字符串,它没有机会被重用......