ASP.NET MVC - 缓存

5
我正在研究ASP.NET MVC的缓存问题,同时也在完成Web主机。我有两个问题...
1)在共享托管环境中进行缓存是否会存在问题?因为资源是共享的,这个问题可能听起来很傻,但我不知道缓存背后的工作原理。
2)在实施缓存之前,我想问一下这种方法是否有意义。我将尽可能多地缓存,并在需要时使其失效。然而,对于一个频繁更新的项目列表(比如每分钟),缓存如何工作呢?例如,StackOverflow的首页每分钟都有很多新问题,那么它的首页是否可以被缓存?
编辑:3)我还想讨论分页等缓存工作原理。

你需要对想要缓存的项目进行分类。那些频繁更新的内容不适合被缓存。在 stackoverflow 的情况下,我不会将其设置为可缓存。像网站全局设置、用户登录时的账户信息等这些内容可以被缓存。此外,如果你能使用任何第三方缓存软件,最好选择像 memcached 这样的工具。 - Shakeeb Ahmed
那么你的意思是Memcached比ASP.NET缓存更好? - TPR
这并不是简单的好与坏之分。如果内置缓存能够满足你的需求,那么你不需要再寻找更好的选择了……然而,你应该在缓存周围加上自己的包装器(作为接口),这样当你需要时就可以轻松更改底层实现。 - Murph
1个回答

1

如果您正在处理每秒200个请求,那么一分钟就是很长的时间了。我认为SO使用asp.net输出缓存来处理首页。他们还可能使用某种甜甜圈缓存来缓存非用户特定部分。

Asp.net MVC未更改标准ASP.NET缓存提供程序。在共享主机上,缓存应该可以正常工作,但请注意,如果主机选择在机器级别上锁定缓存设置,则可能会出现问题。缓存提供程序处理内存管理,并且如果内存使用量过高,将从缓存中删除项目。我建议您阅读MSDN页面上的缓存这里

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

关于分页,ASP.NET 的输出缓存功能允许您使用查询字符串进行差异化缓存。因此,如果您使用了类似 www.url.com?page=1 和 www.url.com?page=2 的链接,它们将被独立地存储在缓存中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接