在客户端上缓存ASP.NET用户控件

时间:2010-07-02 13:11:02

标签: c# asp.net user-controls

我想知道是否可以在客户端上缓存ASP.NET UserControl。

我有一个用户控件,用于查询数据库并呈现GridView。它必须位于客户端上,因为查询结果因用户而异(通过User.Identity.Name)。 该页面用于Intranet。

任何帮助都会非常感激!

提前致谢,

PS:默认情况下用户控件在哪里缓存?服务器,代理?

2 个答案:

答案 0 :(得分:1)

代理服务器和客户端只能缓存静态数据。动态数据必须始终由IIS提供,但您可以通过将数据存储在内存缓存中来提高效率,而不是为每个请求查询数据库。

关于ASP.NET,术语“缓存”通常是指将数据存储在服务器的内存中。您可以使用键值(例如User.Identity.Name)向不同用户提供不同的数据。如果要在服务器上缓存用户的结果,可以使用Cache.Add将DataSet(或其他DTO)添加到Cache字典中,并使用用户的ID作为键。如果相关数据不经常更改,这可能是提供用户特定数据的有效方式。如果数据经常更改,则可以使用Cache对象的回调机制在(例如)文件更改时使缓存项失效。

IIS / ASP.NET还支持基于查询字符串的页面缓存和页面部分缓存。它们由.aspx页面中的页面指令和web.config中的每个站点控制。

答案 1 :(得分:0)

用户控件始终缓存在Web服务器上,而不是代理服务器或Web浏览器中。

为了解决您的意图,您可以根据OutputCache指令的VaryBy属性呈现不同的缓存结果。其中包括:

  • 的VaryByParam
  • VaryByControl
  • VaryByCustom是