使用squid,我们可以缓存网页。我不确定它是否提供与ASP.NET缓存(我主要使用ASP.NET)相同数量的缓存方法,但它是一个缓存网页的工具。
然后我们有memcached,它可以缓存数据库表。我相信这是正确的,它就像SqlCacheDependency(如果我错了,请纠正我)。
但是,在大型Web应用程序中是否存在使用memcached,squid和ASP.NET(或PHP,JSP - 应用程序框架级别)缓存的空间。
谢谢!
答案 0 :(得分:2)
你可能会发现整个页面的缓存过于粗糙,缓存数据库表并没有给你带来足够的提升,因此需要缓存大量的东西。
例如,假设您有一个应用程序在每个页面上显示已登录用户的名称。缓存整个页面实际上不起作用,因此您需要在应用程序框架内的某个位置下拉一个级别并缓存。
答案 1 :(得分:2)
然后我们有memcached,它可以缓存数据库表。我相信这是正确的,它就像SqlCacheDependency(如果我错了,请纠正我)。
Memcached是一个分布式哈希表。内置.NET缓存的主要优点是缓存可扩展(您可以根据需要添加任意数量的memcached boxen)和同步(所有Web服务器都可以访问相同的内容,并使一个Web上的数据无效或更新)服务器立即传播到所有人)
性能方面,它比.NET缓存更差(你在服务器上查找对象,而不是在一台机器上查找内存)
但是,在大型Web应用程序中是否存在使用memcached,squid和ASP.NET(或PHP,JSP - 应用程序框架级别)缓存的空间。 < / p>
由于上述原因,我可以想象一个2级缓存,首先使用.NET缓存,然后使用memcached。 (例如,Get()查看memcached,将结果存储在.NET缓存集中,在10秒内到期,然后在接下来的10秒内使用相同缓存键的所有get调用使用.NET缓存,冲洗,重复)
通过这种方式,您可以获得内存缓存查找的性能,而无需纯memcached解决方案的网络IO成本,并具有memcached的同步和可伸缩性优势。