【发布时间】:2010-12-19 04:27:25
【问题描述】:
我刚开始考虑在我的一个应用程序中使用 NHibernate 二级缓存。我可能会使用依赖于 ASP.net 缓存的NHibernate.Caches.SysCache.SysCacheProvider。
启用缓存不是问题,但我想知道如何管理缓存 e。 G。以编程方式从缓存中删除某些实体等。
我的应用程序是某种图像数据库。用户通过后端上传图片,可以通过/ImageDb/Show?userId=someUserId在前端查看
数据不会经常变化。如果它发生变化,用户将不会关心后端中名为“清除我的缓存”的按钮,该按钮会从缓存中删除 此用户 的缓存对象。
我在网上找到了一个解决方案,可以从 nhibernates 二级缓存中删除 所有 缓存的对象。但这对我来说有点太暴力了......我不想仅仅因为一个用户试图清除他自己的数据的缓存,就为几十个用户清除整个缓存。
所以我基本上想做的是:有选择地从 C# 中的 nhibernates 二级缓存中删除缓存的 db 对象。
这可能吗?我想这也取决于缓存提供程序。如果这对 ASP.net 缓存提供程序不可行,我愿意接受其他内置/开源建议。
【问题讨论】:
-
我知道它现在可能不相关,但请注意您的 URI 方案不正确。它应该是 Users/[Id]/ImageDB/Show
-
@the_drow - 除非应用程序被称为 ImageDb :) 你仍然大部分是对的,只需将 ImageDB 更改为 /Images 或其他东西
-
@LukeSchafer:我写 ImageDb 只是因为 OP 使用它。
-
@the_drow - 是的,当然,只是指出它可能是一个虚拟目录而已:)
标签: nhibernate caching second-level-cache isession