- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先介绍一下背景。我目前有一个由 Windows Azure 托管的网站,具有多个实例,并且 AppFabric 作为我唯一的缓存提供程序。
一切都很顺利,直到今天早上我的流量激增。在实例过载并停止响应后,一旦新实例启动,一切都会恢复正常。
但是,我开始收到来自 AppFabric 的消息,称我受到限制,因为在给定的时间内请求太多。这很公平,但这确实让事情变得很糟糕。
为了避免将来出现这些消息,我计划实现一个生命周期非常短的 InProc 缓存。所以它首先检查InProc,如果没有就去AppFabric,如果没有就去DB。
ObjectCache cache = MemoryCache.Default;
CacheItemPolicy policy = new CacheItemPolicy();
policy.AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(5);
我的问题是
更新我只是想说我选择了上面的方法并且效果很好。我仅将它用于一般数据存储,而不是 session 状态。由于没有服务器关联性,具有 session 状态的 MemoryCache 在 Azure 上无法很好地工作(正如下面 David 提到的)。
2012 年 3 月 16 日更新在意识到这一点后,我还在大多数页面上禁用了 SessionState。我的大多数页面都不需要它,因此这会迅速减少我在重负载下对缓存的调用。我还禁用了大多数页面的 ViewState,只是为了稍微加快页面加载时间。
最佳答案
您是否使用缓存来提供 SessionState 存储或应用程序的常规数据存储,或两者兼而有之?这并不完全清楚,因为 InProc 通常指的是 SessionState,但您的示例代码看起来不像 SessionState。
假设您存储的数据可以在本地安全缓存,那么我建议您研究 AppFabric 本地缓存。它基本上可以满足您的需求,并且不需要编写任何单独的代码(我认为......)。
否则,按照您的概述使用 MemoryCache 是一个可行的方案。我已经在我的应用程序中完成了此操作,您只需要小心避免缓存不一致问题即可。
根据您的应用程序,您可能还希望通过将数据存储在 HttpContext.Items 集合中来实现每个请求缓存。当代码的不同部分可能在单个请求期间请求相同的数据时,这非常有用。
关于c# - 一起使用 InProc 和 Azure AppFabric 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9613146/
我正在使用AppFabric在我的网站上进行缓存。我们最近在缓存集群中添加了更多主机,由于在[中]将来可能会添加更多主机,因此我们决定将集群重新配置为大型集群,而不是小型集群。现在,我们看到了一些令人
我刚刚测试了将某些内容放入 AppFabric 缓存中,现在我正在努力了解如何简单地查看缓存中的项目。令人惊讶的是,谷歌没有帮助。在 PowerShell 中,我可以使用 get-cache 轻松查看
有没有办法在系统启动时自动启动缓存集群?我在远程 PC 上运行它,当它重新启动时,我必须远程进入它并使用 Start-CacheCluster 从 Powershell 重新启动缓存集群,并且不想这样
我正在尝试开发一种工具(在 Visual Studio 2010 中,C#),它可以读取 Appfabric 缓存中存在的所有项目并将它们存储在表中。我不必使用 powershell。 首先我想到,如
除了设置Secondaries=1还有什么吗?在集群配置中启用HighAvailability,具体是在缓存客户端配置上? 我们的配置: Cache Cluster (3 个 Windows 企业主机
我已经设置了一个 appfabric(v1.1) 缓存服务器。该服务在服务帐户下运行,集群配置存储在 SQL Server 中。服务账号对sql server有权限,可以配置成功。 管理控制台在使用服
我正在尝试在我测试的 Windows Server 2008 企业版上使用 Web 平台安装程序安装 Windows Server AppFabric。尽管我在服务器上安装了 SQL Server(开
通过 Google,我在 stackoverflow 上发现了另一个关于 Azure AppFabric 和 Windows Server AppFabric 之间的差异和相似之处的问题。有人提到,A
我使用 Windows 平台安装程序来安装 AppFabric,它说需要 SQL Express?我不能使用 SQL Server R2 吗?我真的不想安装 SQL Express。 最佳答案 不,您
我使用 Windows 平台安装程序来安装 AppFabric,它说需要 SQL Express?我不能使用 SQL Server R2 吗?我真的不想安装 SQL Express。 最佳答案 不,您
似乎有两种名称相似的产品,但这不是我所期望的。我以为 Azure AppFabric 是 Windows Server AppFabric 的“云”版本,但它们之间似乎没有太多共同点。 我是否错过了大
我是 AppFabric 的新手,我正在为生产环境评估分布式缓存解决方案,我在 Microsoft 商店中使用 Asp.net MVC 和 WebApi,但我们没有使用 Windows Azure。
我是 AppFabric 的新手,我正在为生产环境评估分布式缓存解决方案,我在 Microsoft 商店中使用 Asp.net MVC 和 WebApi,但我们没有使用 Windows Azure。
在对我们全新的主系统进行压力测试原型(prototype)时,我遇到了 AppFabric 缓存的并发问题。当同时使用相同的 cacheKey 调用多个 DataCache.Get() 和 Put()
我正在尝试组装一个简单的 AppFabric 主题,其中使用 SessionId 发送和接收消息。代码不会中止,但 brokeredMessage 始终为空。这是代码: // BTW, the top
我们有一个非常简单的 AppFabric 设置,其中有两个客户端——我们称它们为服务器 A 和服务器 B。服务器 A 也是主要缓存主机,并且服务器 A 和 B 都启用了本地缓存。我们希望能够对服务器
有关如何使用 AppFabric 的缓存功能的问题。 很抱歉问了一个我应该能够从文档中回答的问题,但我已经阅读、阅读和搜索,但无法回答这个问题,这让我相信我对 AppFabric 的缓存有根本性的理解
我们正在设计一个带有 Appfabric 缓存的系统。我们想知道安全性。 拥有缓存项的服务器如何知道对该项的请求来自缓存集群中的另一台服务器或授权服务器? 我们担心的是:任何有权访问 Appfabri
我们刚刚测试了一个由 2 个服务器组成的 AppFabric 集群,我们在其中删除了“领导”服务器。第二个服务器对它的任何请求超时并出现错误: Microsoft.ApplicationServer.
我们正在尝试使用 AppFabric 分布式缓存。在与非域服务器进行了多次反复交流后,我们最终将它们放入域中,安装/设置变得容易了一些。在与大量错误作斗争后,我们启动并运行了它,其中大部分似乎微不足道
我是一名优秀的程序员,十分优秀!