如何缓存用户控件一天
我有画表如何缓存用户控件一天
我有画图像
我想同时缓存用户控件一天另一个用户控制的用户控件,它每天用户访问表格的方式,图像将仅在第一次生成并保存到缓存中,并从缓存中全天使用,以便后续访问。
此缓存应该在三个键可以依靠包括登录的用户密钥
我已经写了自定义代码的图像,它工作正常,我保存这些图片的文件夹。这不使用输出缓存。
现在我不知道如何将表存储到一个文件夹,所以我想要使用用户控件的输出缓存来实现缓存表。
我不知道如何缓存一天。
按照指示由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总是给空,任何想法?
试试这个:
<%@ OutputCache Duration="86400" VaryByParam="None" Shared="true"
VaryByControl="Key1;Key2;Key3" %>
哪里键1, Key2和Key3是控件的属性,其值用于更改缓存。
当Control
输出缓存,只是其输出放入缓存,而不是Control
本身。在使用输出缓存的后续请求中,对Control
的引用将为空,因此您需要在第一次引用它时在Control上设置属性。
对于缓存的Control
,LoadControl()
将返回PartialCachingControl
类型,您可以使用该类型将结果添加到Page
。但Control
类本身不存在,所以您不能使用该引用来设置属性值或调用方法。
Shared是什么意思?如果用户注销,这会持续多久? – 2012-01-04 06:27:47
当我这样做时,我得到这个错误:Sys.WebForms.PageRequestManagerServerErrorException:无法强制'System.Web.UI.PartialCachingControl'类型的对象键入'Brady.TISCOR.TISCORDirect.WebHelper.DashboardControl'。 – 2012-01-04 09:22:04
Shared =“true”表示输出缓存的键不包含包含该控件的页面的类型。否则,默认情况下,它将包含页面类型。是的,(无论哪种方式),如果用户注销,它将持续。对于你看到的错误,也许你可以发布一些代码? – RickNZ 2012-01-04 09:39:51
请尝试使用以下代码示例来缓存用户控件。在这里,你必须改变持续时间按照您的要求和用户控件的名称,按您的控制:
<%@ OutputCache Duration="60" VaryByParam="none"
VaryByControl="CategoryDropDownList" %>
更多参考链接:http://msdn.microsoft.com/en-us/library/aa478965.aspx
请注意,这是60_seconds_。那么UserKey怎么样? – 2012-01-03 12:24:33
这不是帮助我,因为它依赖于CategoryDropDownList,我希望它依赖让我们说三个会话变量,而不是60秒它不应该更新缓存,直到最后一个缓存在当天更新 – 2012-01-03 12:33:34
CategoryDropDownList是控制的名称例。你可以在那里给你的用户控制ID。 – 2012-01-03 12:39:00
如果控件(PartialCachingControl)没有添加到页面中,它总是给出null,当您向页面添加某种方式并呈现控件后,它会通过CachedControl属性为您提供访问权限。
请详细说明钥匙。他们是网址的一部分吗? – 2012-01-03 12:42:59
不,它们是会话变量 – 2012-01-03 13:19:38
然后'@ OutputCache'不会工作......剔除Cache对象中的数据。 – 2012-01-05 11:59:49