【发布时间】:2011-06-06 16:36:39
【问题描述】:
我们使用 appfabric 作为 NHibernate asp.net 应用程序的二级缓存,该应用程序包括面向客户的网站和管理网站。它们都连接到同一个缓存,因此当管理员更新某些内容时,面向客户的站点也会更新。
似乎工作正常 - 我们在单独的服务器上有一个 CacheCLuster,一切都很好,但我们希望启用 localcache 以获得更好的性能,但是它似乎没有工作。
我们是这样启用的...
bool UseLocalCache =
int LocalCacheObjectCount = int.MaxValue;
TimeSpan LocalCacheDefaultTimeout = TimeSpan.FromMinutes(3);
DataCacheLocalCacheInvalidationPolicy LocalCacheInvalidationPolicy = DataCacheLocalCacheInvalidationPolicy.TimeoutBased;
if (UseLocalCache)
{
configuration.LocalCacheProperties =
new DataCacheLocalCacheProperties(
LocalCacheObjectCount,
LocalCacheDefaultTimeout,
LocalCacheInvalidationPolicy
);
// configuration.NotificationProperties = new DataCacheNotificationProperties(500, TimeSpan.FromSeconds(300));
}
最初我们尝试使用超时失效策略(3 分钟),我们的应用感觉运行得更快了。但是,我们注意到,如果我们在管理站点中更改某些内容,它会立即在实时站点中更新。由于我们使用的是超时而不是通知,这表明本地缓存没有被查询(或者是,但总是丢失)。
cache.GetType().Name 返回“LocalCache”——所以工厂已经做了本地缓存。
在我的开发环境中的 PS 中运行“Get-Cache-Statistics MyCache”(从 vs2008 本地运行的 asp.net 应用程序,在单独的 w2k8 机器上运行的缓存集群)显示了一些请求计数。但是,在生产环境中,请求计数会急剧增加。
我们尝试按照此处的方法来设置缓存客户端服务器流量...http://blogs.msdn.com/b/appfabriccat/archive/2010/09/20/appfabric-cache-peeking-into-client-amp-server-wcf-communication.aspx 但日志文件中只有初始标头 - 即也没有登录。
我在 SO 或 Google 中找不到任何东西。
我们做错了吗?我们有没有搞砸 AppFabric 的安装——我们是通过 WebPlatform Installer 安装的——我想? (注意:运行 ASp.net 的 IIS 框不在集群中 - 它只是客户端)。
任何见解都非常受欢迎!
【问题讨论】:
标签: nhibernate caching appfabric second-level-cache