数据库缓存失效策略和时机

Database cache invalidation strategy and timing

如果您使用以下策略:

这工作得很好,但缓存显然不会立即失效,这在少数情况下是有问题的。

一个例子是当用户将产品添加到购物车时。用户将被带到一个显示购物车内容的新页面。在这种情况下,缓存没有及时失效,新添加的项目将不会出现。如果您重新加载页面,听众有时间 运行 并且项目现在就在那里。

我正在努力寻找通用的解决方案。这是缓存失效的缺点还是我遗漏了什么?

不太可能有适用于所有缓存场景的通用解决方案,您最好使用 Session / HttpContext 等常用方法针对您的应用程序定制解决方案,具体取决于您需要缓存对象的持续时间。

可以将购物车项目放入会话中,可以使用 HttpContext.Current.Items 仅在请求持续时间内缓存的项目等。更常见的是 CacheDependency 用于不经常更改的更多静态项目,因此延迟没关系。