如何将用户控件缓存一天
本文关键字:缓存 一天 控件 用户 | 更新日期: 2023-09-27 18:19:14
我有一个绘制表格的用户控件
我有另一个绘制图像的用户控件
我想缓存用户控制一天,这意味着每天如果用户访问表和图像将仅在第一次生成,并保存到缓存,并从缓存中使用一整天的任何后续访问。
这个缓存应该依赖于三个键,包括登录的用户键
我已经为图像编写了自定义代码,它工作得很好,我将这些图像存储到一个文件夹。这是不使用输出缓存的。
现在我不知道如何将表存储到文件夹中,所以我想使用用户控件的输出缓存来实现表的缓存。
我不知道如何缓存一天。
按照Rick的指示,我在用户控件
中添加了以下指令<%@ OutputCache Duration="86400" VaryByParam="None" Shared="true"
VaryByControl="Key1;Key2;Key3" %>
并将以下代码写入消费者页
DashboardControl dc = null;
Control control = (Control)Page.LoadControl(urlBuilder.GetCompleteURL().TrimEnd('?'));
if (control is DashboardControl)
{
dc = control as DashboardControl;
}
else if (control is PartialCachingControl && ((PartialCachingControl)control).CachedControl != null)
{
dc = (DashboardControl)((PartialCachingControl)control).CachedControl;
}
但是CachedControl总是给null,你知道吗?
试试这个:
<%@ OutputCache Duration="86400" VaryByParam="None" Shared="true"
VaryByControl="Key1;Key2;Key3" %>
其中Key1, Key2和Key3是控件上的属性,其值用于改变缓存。
当Control
被输出缓存时,只有它的输出被放在缓存中,而不是Control
本身。在使用输出缓存的后续请求中,对Control
的引用将为null,因此您需要在第一次引用控件时设置控件属性。
对于缓存的Control
, LoadControl()
将返回PartialCachingControl
类型,您可以使用它将结果添加到Page
。但是Control
类本身不存在,所以您不能使用该引用来设置属性值或调用方法。
尝试使用以下代码示例缓存用户控件。在这里,您必须根据您的需求更改持续时间,并根据您的控件更改用户控件名称:
<%@ OutputCache Duration="60" VaryByParam="none"
VaryByControl="CategoryDropDownList" %>
更多内容请参考:http://msdn.microsoft.com/en-us/library/aa478965.aspx
如果控件(PartialCachingControl)没有添加到页面中,它总是给出null,在您以某种方式添加到页面并呈现控件之后,它将通过CachedControl属性给您访问