【发布时间】:2011-10-26 17:52:13
【问题描述】:
我有两个独立的网络应用程序:
- 创建和更新数据的“管理”应用程序
- 显示数据的“公共”应用程序。
“public”上显示的信息不经常变化,所以想缓存一下。
我正在寻找的是在管理站点发生更改时更新公共站点上的缓存的“最简单的事情”。
为了增加一些复杂性,该应用程序在 Windows Azure 上运行。这排除了文件和 sql 缓存依赖项(至少是内置的)。
我在一个 Web 角色实例上运行这两个应用程序。
我考虑过为此目的使用 Memcached。但由于我并不真正追求分布式缓存并且性能不如使用内存缓存(System.Runtime.Caching),我想尝试避免这种情况。
我也考虑过使用 NServiceBus(或 Azure 等价物),但再次发送通知以清除缓存似乎有点过头了。
我在想什么(可能有点老套,但很简单):
- 在公共站点上执行清除内存缓存的控制器操作。我不担心清除特定的缓存项目,数据变化不足以让我担心。当“管理员”应用程序进行缓存时,我们会向公共站点上的清除缓存操作发出 httpwebrequest。
- 由于数据库是两个应用程序之间唯一的共享资源,因此只需添加一个带有上次更新日期时间的表即可。公共站点将对每个请求进行查询,并将数据库上次更新日期时间与我们将保存在内存中的日期时间进行比较。如果不匹配,则我们清除缓存。
上述选项还有其他建议或问题吗?这里的关键是简单和高性能。
【问题讨论】:
-
一般我们用redis来做这种东西,它也为我们提供了消息总线。在一个地方,我使用了数据库轮询。
标签: asp.net .net caching azure