0

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

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

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

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

所以,这是我的问题:

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

1 回答 1

1

您可以缓存网页的某些部分,这将取决于配置文件列表,方法是将它们放在用户控件中并将其标记为可缓存。SqlCacheDependency缓存策略过期也可以定义。至于缓存位置,场中的每个 Web 服务器都会在内存中拥有自己的版本,但使用缓存过期将确保该版本不会与数据库中的数据不同步。

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

于 2009-11-04T21:33:46.303 回答