我正在尝试在 Web 应用程序中实现缓存。缓存将在 BLL 中完成。
BLL 方法签名是
public static List<Ailias> Select(List<Filter> filters)
目前只需调用 DAL 中的相应方法。
我遇到的问题是我的缓存依赖项将是过滤器对象,只要过滤器对象不同,就应该进行新的 DAL 调用。
如何添加此依赖项,我在文档中只能找到对文件的依赖项?
我正在尝试在 Web 应用程序中实现缓存。缓存将在 BLL 中完成。
BLL 方法签名是
public static List<Ailias> Select(List<Filter> filters)
目前只需调用 DAL 中的相应方法。
我遇到的问题是我的缓存依赖项将是过滤器对象,只要过滤器对象不同,就应该进行新的 DAL 调用。
如何添加此依赖项,我在文档中只能找到对文件的依赖项?
AFAIK 有两个预定义的 CacheDependancy(文件和 Sql),但是没有什么可以阻止您实现自己的 CacheDependancy ,如此链接中所述
缓存依赖项只是从缓存中卸载项目的一种后台方法。这意味着将缓存管理逻辑放在另一个系统/进程中。它可以工作,但它也可能引入不必要的复杂性。
“……每当过滤器对象不同时……”
有什么不同?以前在该方法调用中使用过什么?听起来您的 List 集合是您的缓存键。
考虑在 List 集合上实现一个唯一的哈希键,并在缓存中维护两个项目 - 来自过滤器的缓存键,具有静态名称,如“list-alias-filter-key”,以及 List 集合。
当您对该方法进行后续调用时,将 List 唯一哈希键(缓存键)与“list-alias-filter-key”中的键进行比较。如果它们相同,您就知道可以安全地提取 List 的缓存值。如果它们不同,请使用新的 List 集合重新查询并重置缓存中的两个值。