在Azure Web Sites中的缓存策略

3

我有一个简单的项目,想要发布到Azure Web Sites上。我需要做一些基本的缓存来提高速度。

在这种情况下缓存数据的正确策略是什么?我猜只要我停留在免费或预留状态下,我可以使用简单标准的Web缓存,因为它是单台机器,但如果我想使用多个实例共享呢?Web站点是否真正提供了分布式缓存?我在这里还有哪些简单缓存选项?

2个回答

1
以下是我根据Dan的回答下的简短讨论提供的2分建议。截至2013年7月,我刚将我的网站/网络应用程序部署到Azure上。这是一种足球(对于我们美国朋友来说是足球)预测游戏。它使用缓存以存储大量POCO对象(例如比赛列表,球员列表等)。这不是全新的应用程序,我们在本地硬件上运行了两个季节(2个服务器在一个农场中,我认为有点过度,SQL数据库)。现在,我们在共享模式下运行单个实例。新赛季将于下周开始,如果我们发现单个实例不够用,我们已经准备好进行扩展。
所以我最终要谈论缓存。我们选择了共享缓存。如何设置它已经有很好的文档记录,尽管我个人感觉文档没有跟上Azure发展的速度。
将项目放入和从共享缓存中取出非常容易,以及如何在web.config中配置它。我们必须花费一点力气找到一种方法,在需要时从应用程序中清除整个缓存 - 据我所知,没有办法枚举已经在缓存中的项目。最终,我们得出了一个非常简单的解决方案,每当您将任何内容放入缓存时,只需在某个地方记录键,并且当您需要清除整个缓存时,使用该键即可。
现在,我必须说我不是支付此Azure托管服务账单的人,我在Azure门户上看不到当前账单,但我显然关心总体价格。对我来说不太清楚的是使用Shared Cache的成本。尽管我无法在Azure价格计算器中看到这一点,但我花了一些时间找到了一些定价表,虽然我并不完全确定它是否真正适用。

回到我在丹的答案下面的评论 - 我确信有很多开发者正在为小到中型网站工作,使用标准HttpCache作为放置POCO对象以实现更快访问的地方。在这些示例中,总缓存大小可能高达50 MB(显然取决于您使用缓存的方式)。这样的网站可能在单个实例上运行良好,但是嘿 - 2个或更多个实例会更好,当需要扩展时我想做好准备。对于这种情况,我缺少明确的指导,以选择何种类型的缓存以及它将花费多少。


1

根据this,看起来你不能使用共享/分布式缓存。这个情况有改变吗?你有没有链接证明Azure支持网站的两种缓存方案之一?

只要你只有一个实例,你是对的,使用普通的outputCache应该没问题。如果你扩展到2个或更多实例,你可能需要从网站迁移到托管服务,以便使用其他两种缓存策略之一。Azure在网站上提供的功能套件不如托管服务完整。


我已经阅读了有关分布式缓存限制的内容,只是不确定它是否仍然有效。我猜这是他们在将产品从测试版推出之前需要修复的问题。 - Riri
1
距离danludwig的回复已经过去了6个月,我猜在Azure世界里发生了很多变化 - 我刚刚部署了一个使用Azure共享缓存的网站。然而,让我有点疯狂的是,至少在MSDN网站上,有很多过时的文档,很难得到正确的答案。Riri的问题非常好,我想知道更新后的答案会是什么 :-) - Antonin Jelinek
1
如果你正在使用共享/分布式缓存与网站一起,那么看起来你对这个问题有一个更新的答案。我相信这个问题与在网站中使用共享缓存与托管服务有关... 在后者中,共享缓存一直是可用的。 - danludwig

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