首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OutputCache of .NET MVC5 App in Azure Falls Out Cache快速

OutputCache of .NET MVC5 App in Azure Falls Out Cache快速
EN

Stack Overflow用户
提问于 2017-09-19 19:57:17
回答 1查看 508关注 0票数 0

我的目标:基本上所有的页面都要一直缓存,这样用户就很少需要访问我的CMS来获取内容了。

我在Azure中部署了一个c#/.Net MVC 5 Web应用程序。我还把控制器上的所有OutputCache都设置为1周的604800 s。我可能天真地认为,缓存的输出存储在Azure中的内存中。然而,当我启动我的应用程序并在网站上爬行时,我希望Azure内存会被缓存的内容填满,但实际上,内存利用率可能会有所提高。不过,大约5分钟后,它又回到了60%的“休息状态”。我也尝试过使用MemoryCache,但是它有一个类似的结果--内存使用量增加,之后不久就恢复到正常状态。

在任何情况下,结果都是页面表现得好像没有缓存。例如,如果我爬行1页并访问它,它将在大约1秒内加载(缓存)。如果我爬行2000页并访问一个随机页面,它将在3-4秒内加载(它不是缓存的)。我已经通过在视图中添加一个日期时间来测试这个问题。

所以..。底线是:缓存=快速,而不是缓存=平均。我要它快点!

我看过Redis Cache,这可能是一种方法,看起来很容易.但我的直觉是,这应该是基本的功能(因为它是内置在框架中的)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-20 02:18:27

Azure确实支持内存中的OutputCache。我们可以很容易地使用以下代码来确认它。刷新TestCache页面后,输出日期时间不会更改。

代码语言:javascript
复制
[OutputCache(Duration = 3600)]
public ActionResult TestCache()
{
    return Content(DateTime.Now.ToString());
}

但是在Azure中使用内存缓存时存在一些问题。

第一个问题是它限制了您在web应用程序实例上可用的内存,当您缓存大量页面输出数据时,这可能会造成内存不足问题。如果您的内存已满,您的web应用程序将重新启动。如果重新启动web应用程序,所有缓存的内容都会丢失。的另一个问题是您的应用程序在多个负载平衡实例上运行。下一个请求可能会转到另一个实例,它也会在这个实例中创建一个ASP.NET输出缓存数据的新副本。每个Web角色实例中的页面输出的这些冗余副本消耗了大量额外的内存。

为了避免上面的问题,我建议您使用Redis来存储缓存的内容。关于如何使用Redis缓存,下面的链接是供您参考的。

Azure Redis缓存的ASP.NET输出缓存提供程序

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46308800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档