我想问有没有办法实现这个功能:
我有一个支持Ajax的用户网站(左侧是树视图,右侧是内容)。当用户选择左侧的节点时,我需要将最后选择的节点存储在数据库中。但是,用户可以经常更改节点(甚至每分钟5或10次)。
所以我想将它添加到应用程序缓存中,例如:
cache["userName"]=selectedNodeID;
是否存在任何缓存框架:如果缓存项没有因为5分钟更改而对缓存项执行某些操作?它允许我在上次更改后5分钟后存储最后选择的节点ID。如果用户在此时间过去之前更改了节点 - 我只会更新缓存值并重置计时器。
任何提示?
答案 0 :(得分:4)
您可以使用回调机制来从缓存中删除缓存项。如果将缓存持续时间设置为5分钟,那么您可以检查回调方法是否已保存该项目 - 如果尚未保存,则可以将其推送到数据库。在任何一种情况下,您都可以将项目直接放回缓存中5分钟。
e.g。你会有这样的东西作为你的Cache.Insert方法的最后一个参数:
new CacheItemRemovedCallback (SaveItemToDatabaseAndReturnItToTheCache)
然后你会相应地实现回调方法。
此处有更多信息:http://weblogs.asp.net/kwarren/archive/2004/05/20/136129.aspx