2010-02-25 102 views
5

我正在研究与ASP.NET MVC缓存,我也在最终确定的Web主机。 我...asp.net mvc - 缓存

1)在共享主机的环境中进行时,是否缓存带来的问题两个问题,因为资源是共享的,所有?这个问题听起来可能很愚蠢,但我不知道缓存在现场的工作方式。

2)之前,我实现缓存,我要问,如果这种做法是有道理的。我将尽可能缓存,并在需要时使其无效。但是,缓存如何为更新频繁的项目列表工作,比如说在一分钟之内。例如,StackOverflow的首页,每分钟都会添加很多问题,实际上可以缓存首页?

编辑:3)我也想谈一谈缓存如何与寻呼和所有。

+0

您必须对要缓存的项目进行分类。经常更新的东西并不是一件好东西被缓存。 在** stackoverflow **的情况下,我不会让它缓存。 当他登录等网站范围设置用户帐户信息等事情可以被缓存。 此外,如果您可以使用任何第三方缓存软件,它将最好像** memcached **。 – 2010-02-25 10:03:50

+0

所以你暗示memcached比ASP.NET缓存更好? – TPR 2010-02-25 10:14:02

+0

其不如更好或更差。如果内置缓存做到了你所需要的,那么你就不会做得更好了......然而,你应该做的是把你自己的包装(作为接口)放在缓存周围 - 这样就可以很容易地改变您需要的基础实施。 – Murph 2010-02-25 10:31:57

回答

1

我想一分钟是如果要维修200个请求第二,我本来以为SO使用asp.net的输出缓存的头版很长一段时间。他们也很可能会使用某种donut caching以及缓存非用户特定部分。

Asp.net MVC使用标准的ASP.NET缓存提供商不变。在共享主机上缓存应该可以正常工作,但请注意,如果主机选择在计算机级别上,主机可以锁定缓存设置。缓存提供程序处理内存管理,如果内存使用率过高,将从缓存中删除项目。我建议你阅读缓存here上的MSDN页面。

并发症来自集群环境与其说是一个共享的主机。在集群环境中,缓存不会分发到所有机器,因此每台机器都有一个单独的缓存副本。如果这会造成问题,那么您需要调查分布式缓存解决方案,但在大多数简单情况下,这很好。

关于分页,asp.net的输出缓存功能允许您根据查询字符串进行变化,所以如果您有www.url.com?page=1,它将单独存储在www.url缓存中.COM?页= 2。