Asp.net mvc asp.net mvc-缓存

Asp.net mvc asp.net mvc-缓存,asp.net-mvc,caching,Asp.net Mvc,Caching,我正在研究使用ASP.NETMVC进行缓存,同时我也正在完成web主机的定稿。 我有两个问题 1) 由于资源是共享的,所以在共享托管环境中进行缓存时是否会引起问题?这个问题听起来可能很傻,但我只是不知道缓存在幕后是如何工作的 2) 在实现缓存之前,我想问一下这种方法是否有意义。我将尽可能多地缓存,并在需要时使其无效。然而,缓存是如何为经常更新的项目列表工作的,比如说在一分钟内。例如,StackOverflow的首页,每分钟都会添加这么多问题,首页真的可以被缓存吗 编辑:3)我还想讨论缓存如何与分

我正在研究使用ASP.NETMVC进行缓存,同时我也正在完成web主机的定稿。 我有两个问题

1) 由于资源是共享的,所以在共享托管环境中进行缓存时是否会引起问题?这个问题听起来可能很傻,但我只是不知道缓存在幕后是如何工作的

2) 在实现缓存之前,我想问一下这种方法是否有意义。我将尽可能多地缓存,并在需要时使其无效。然而,缓存是如何为经常更新的项目列表工作的,比如说在一分钟内。例如,StackOverflow的首页,每分钟都会添加这么多问题,首页真的可以被缓存吗


编辑:3)我还想讨论缓存如何与分页和其他功能一起工作

如果每秒处理200个请求,我认为一分钟是很长的时间,我会认为在首页使用asp.net输出缓存。他们也很可能使用某种类型的缓存来缓存非用户特定的部分

Asp.net MVC使用标准的Asp.net缓存提供程序,但没有更改。在共享主机上,缓存应能正常工作。但是,请注意,如果主机选择在计算机级别上锁定缓存设置,则主机可以锁定缓存设置。缓存提供程序处理内存管理,如果内存使用率过高,将从缓存中删除项。我建议您阅读有关缓存的MSDN页面

复杂性来自集群环境,而不是共享主机。在集群环境中,缓存不会分布到所有计算机,因此每台计算机都有一个单独的缓存副本。如果这造成了一个问题,那么您将需要研究分布式缓存解决方案,但在大多数简单的情况下,这是可以的


关于分页,asp.net的输出缓存功能允许您根据查询字符串进行更改,因此,如果您有www.url.com?page=1,它将与www.url.com?page=2分开存储在缓存中。

您必须对要缓存的项进行分类。频繁更新的东西不适合缓存。在stackoverflow的场景中,我不会让它成为可缓存的。比如在站点范围内设置用户登录时的帐户信息等。这些东西可以缓存。此外,如果您可以使用任何第三方缓存软件,它最好与memcached类似。因此,您是在暗示memcached比ASP.NET缓存更好?它并没有简单到更好或更差。如果内置缓存满足了您的需要,那么您就不会做得更好。。。然而,您应该做的是在缓存周围放置您自己的包装器(作为一个接口)——这样,在需要时更改底层实现就很简单了。