【问题标题】:c# cache not persisting between usersc#缓存不在用户之间持久化
【发布时间】:2013-08-07 22:39:45
【问题描述】:

我在使用System.Web.Caching.Cache 时遇到了一些问题。

基本上我正在使用

Cache.Insert(tablename, newlist, null, 
   System.Web.Caching.Cache.NoAbsoluteExpiration, 
   System.Web.Caching.Cache.NoSlidingExpiration);

将对象插入缓存,Cache[tablename] 在网络表单中检索它们。

我遇到的是,如果我刷新调用这些方法的浏览器,那么数据就在那里,并且 Cache.Count 反映了这一点。 但是,如果我关闭浏览器并重新启动它,或者在我的测试机器或其他机器上启动不同的浏览器,则缓存数据不存在。

即缓存的工作就像我使用会话存储一样。我也尝试过使用应用商店,但结果完全相同。

我查看了我的应用程序池设置和 web.config,但看不到任何明显的东西。

非常感谢您对此提供任何帮助,因为重新查询数据库以获取要放入缓存的信息会大大降低网络表单的速度。

我不确定我是否足够清楚。
重现。
浏览器 1 打开网页,没有缓存数据
浏览器 1 刷新网页,缓存数据

浏览器 2 打开网页,没有缓存数据
浏览器 2 刷新网页,缓存数据

浏览器 1 刷新网页,缓存数据

如您所见,它的工作方式就像它是仅会话数据,而不是公共缓存。使用回调可能不会告诉我任何信息,因为数据仍然存在,只是无法用于新会话

【问题讨论】:

  • 尝试为何时从缓存中删除项目添加回调处理程序并查看它何时触发?
  • 这仍然不适合我
  • 您是否尝试过将一个简单的 Web 应用程序放在一起来重现问题。我刚刚尝试过这个并按预期工作......只要我的 DelvelopementServer “活着”,缓存仍然被填充
  • 看看这里,如果你还没有stackoverflow.com/questions/14421744/…

标签: c# .net caching webforms


【解决方案1】:

听起来您在 Visual Studio 中按 F5 重新启动应用程序。

只需打开一个新的浏览器窗口,无需重新启动应用程序。

【讨论】:

  • 在测试之间我没有在 Visual Studio 中做任何事情,只是启动了一个新的浏览器会话,数据就消失了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 2011-12-20
  • 2018-03-21
  • 1970-01-01
  • 1970-01-01
  • 2019-01-08
相关资源
最近更新 更多