从SqlProfileProvider缓存配置文件 - ProfileManager.GetAllProfiles结果

时间:2009-11-04 21:13:00

标签: asp.net caching sqlprofileprovider

我在我的一个网站上使用SqlProfileProvider,在一个页面中我需要获取整个配置文件列表(它是一个内部网)。

我使用的方法是ProfileManager.GetAllProfiles()。问题是它的性能非常糟糕,它大大减慢了网站的速度。

因此,我在考虑将Application范围中方法调用的结果缓存为DataTable(因此我也可以对其进行过滤/搜索)。

我的问题是我有几个运行此webapp的服务器,我希望缓存同步。我开始使用memcached,但是我被一些问题所拖延(因此回到思考应用程序范围内的缓存)。

所以,这是我的问题:

  • 将包含配置文件的DataTable存储在Application对象中是否有效?或者,是否可以将对象存储在缓存中并使其可用于所有客户端/浏览器?
  • 是否可以向此缓存添加(SQL)缓存依赖性?

1 个答案:

答案 0 :(得分:1)

您可以通过将其置于用户控件中并将其标记为可缓存来取决于配置文件列表的网页cache portions。也可以定义SqlCacheDependency缓存策略到期。对于缓存位置,服务器场中的每个Web服务器都将在内存中拥有自己的版本,但使用缓存过期将确保此版本与数据库中的数据不同步。

页面或片段缓存是最有效的缓存技术,因为与缓存模型(DataTable或其他)相反,您不需要为HTML渲染付出代价。