然后我们有memcached,它可以缓存数据库表。我相信这是正确的,它就像SqlCacheDependency(纠正我,如果我错了)。
Memcached是一个分布式哈希表。与.NET缓存内置的主要优点相比,您的缓存是可扩展的(您可以根据需要添加任意数量的memcached boxen)并同步(您的所有Web服务器都可以访问相同的内容,并使一个Web中的数据失效或更新服务器会立即传播到所有的人)
性能方面,它比.NET缓存恶化(你正在寻找了跨服务器的对象,而不是在内存中查找一台机器上)
但是,在大型Web应用程序中是否有任何可以使用memcached,squid和ASP.NET(或PHP,JSP - 应用程序框架级别)缓存的空间。
基于上述原因,我可以想像一个2级高速缓存,使用.NET缓存第一,然后memcached的。 (例如,Get()查看memcached,将结果存储在10秒内过期的.NET高速缓存中,然后在接下来的10秒内使用.NET高速缓存对具有相同高速缓存键的所有调用进行清洗,重复)
通过这种方式,您可以在没有纯memcached解决方案的网络IO成本的情况下获得内存中缓存查找的性能,同时具备memcached的同步和可伸缩性优势。
您的示例是一种常见的情况。围绕整页缓存有一些方法,同时仍然改变特定的HTML片段,称为“甜甜圈缓存”。请参阅http://stackoverflow.com/questions/3318570/turn-off-page-level-caching-in-a-user-control/3318609#3318609 – 2011-10-21 23:18:16