Windows Azure Caching Document说
如果可能,请存储并重用相同的DataCacheFactory对象以节省内存并优化性能。“
有没有人看到任何指标或量化这是多么昂贵?
“MaxConnectionsToServer设置...确定打开到缓存集群的每个DataCacheFactory的chennel数量。”
因此,如果MaxConnectionsToServer = 1且DataCacheFactory是您应用中的单例,那么您已经有效地将所有请求同步到您的Web服务器!
然而,there is a lot表明DataCacheFactory应该是一个单例(即放在Application_OnStart中)。
这很关键,我无法相信它不在Microsoft文档中。 DataFacheFactory在AppFabric,Azure共享缓存和Azure缓存中的处理方式是否相同?我很难相信微软以一种需要单件工厂对象的方式设计缓存。这就像要求任何使用SqlConnection的人在他们的应用程序中拥有一个单独的SqlConnectionFactory对象。
因此,考虑到相对平均的Web应用程序(例如,每小时1,000个请求,缓存中约100个对象,平均请求访问5个缓存对象):
编辑(正在进行的答案):
(1/2)。让Azure连接池处理Factory对象
(3)。还在测试...
(4)。仍然试图弄清楚我是否应该重新使用DataCache引用
答案 0 :(得分:11)
怎么样,微软确实记录了最佳实践,它确实涉及连接池!虽然不容易找到(至少对我而言)。
似乎答案只是在实现较新的Azure缓存时不使用DataCacheFactory对象而只是access the DataCache object directly
“DataCache构造函数也有新的重载 创建缓存客户端更简单。在过去,它始终是 创建返回目标的DataCacheFactory对象所必需的 缓存。现在可以使用DataCache创建缓存 构造函数直接。以下示例为该客户端创建客户端 默认缓存来自配置文件的默认部分。“
DataCache cache = new DataCache();
“使用最新的Windows Azure SDK,连接池已启用 在应用程序或Web中定义缓存设置时的默认设置 配置文件。由于这种默认行为,这很重要 正确设置连接池的大小。连接池 size是使用maxConnectionsToServer属性配置的 dataCacheClient元素。“
我希望Microsoft就如何正确配置maxConnectionsToServer提供一些指导,但这可以通过测试来确定。使用新的Azure缓存自动连接池非常酷:)
答案 1 :(得分:1)
我假设您指的是共享缓存服务(以前称为Azure AppFabric缓存) 每个连接不收取任何费用。但是,当您购买缓存帐户时,您不仅要支付缓存帐户的大小,还要支付特定数量的连接。
最小的缓存帐户每小时有10个连接,而最昂贵的缓存帐户允许160个并发连接。因此,如果您担心考虑到帐户大小可能会耗尽连接,那么谨慎地注意您从应用程序打开的连接数量。
更多细节 http://msdn.microsoft.com/en-us/library/windowsazure/hh697522.aspx