我想知道是否可以在客户端上缓存ASP.NET UserControl。
我有一个用户控件,用于查询数据库并呈现GridView。它必须位于客户端上,因为查询结果因用户而异(通过User.Identity.Name)。 该页面用于Intranet。
任何帮助都会非常感激!
提前致谢,
PS:默认情况下用户控件在哪里缓存?服务器,代理?
答案 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属性呈现不同的缓存结果。其中包括: