问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

简述输出缓存@OutputCache页面指令的Duration、VaryByParam、VaryByControl属性各表示什么意思?

发布网友 发布时间:2022-05-02 05:04

我来回答

1个回答

热心网友 时间:2023-10-09 14:29

控件缓存与页面输出缓存的@ OutputCache指令既有相似之处,又有不同的方面。二者的共同点在于它们的设置方法基本相同,都是文件顶部设置包含属性的@ OutputCache指令字符串。不同点包括以下两个方面:一是控件缓存的@ OutputCache指令设置在用户控件文件中,而页面输出缓存的@ OutputCache设置在普通ASP.NET文件中。二是控件缓存的@ OutputCache指令只能设置6个属性,Duration、Shared、SqlDependency、VaryByControl、VaryByCustom和VaryByParam。而在页面输出缓存的@ OutputCache指令字符串中设置的属性多达10个。以上是设置控件缓存时需要注意的问题。下面列举了一些利用@ OutputCache指令设置控件缓存的示例,其中重点说明了VaryByParam和VaryByControl等属性应用。

用户控件中的@ OutputCache指令设置源代码

<%@ OutputCache Duration="120" VaryByParam="CategoryID;SelectedID"%>

  以上代码设置用户控件缓存有效期时间是120秒,并且允许使用CategoryID和SelectedID参数来改变缓存。通过VaryByParam属性设置,在服务器缓存中可能存储多个用户控件的实例。例如,对于一个包含用户控件的页面,可能存在如下的URL链接。

包含用户控件的页面的URL链接

http://localhost/mypage.aspx?categoryid=foo&selectedid=0
http://localhost/mypage.aspx?categoryid=foo&selectedid=1

  当请求如上URL地址的页面时,由于控件中@ OutputCache指令的设置,尤其是属性VaryByParam的设置,那么在服务器缓存中就会存储两个版本的用户控件缓存实例。

  控件缓存设置除了支持以上所述VaryByParam属性外,还支持VaryByControl属性。VaryByParam属性基于使用POST或者GET方式发送的名称/值对来改变缓存,而VaryByControl属性通过用户控件文件中包含的服务器控件来改变缓存。下面是VaryByControl属性的应用示例代码。

用户控件中的@ OutputCache指令设置源代码

<%@ OutputCache Duration="120" VaryByParam="none" VaryByControl="Category" %>

  以上代码设置缓存有效期是120秒,并且页面不随任何GET或POST参数改变(即使不使用VaryByParam属性,但是仍然需要在@ OutputControl指令中显式声明该属性)。如果用户控件中包含ID属性为“Category”的服务器控件(例如下拉框控件),那么缓存将根据该控件的变化来存储用户控件数据。

  如果读者已经掌握了页面输出缓存的@ OutputCache指令设置方法,那么控件缓存的@ OutputCache指令也会迎刃而解,无非仅使用其中的6个属性而已。然而,可能会产生疑问:如果ASP.NET页面和其中包含的用户控件都通过@ OutputCache指令设置了缓存,那么缓存该如何运行呢?

  遇到这个问题时,应掌握以下个基本原则:一是ASP.NET允许在页面和页面的用户控件中同时使用@ OutputCache指令设置缓存,并且允许设置不同的缓存过期时间值。二是如果页面输出缓存过期时间长于用户控件输出缓存过期时间,则页面的输出缓存持续时间优先。例如,如果页面输出缓存设置为100秒,而用户控件的输出缓存设置为50秒,则包括用户控件在内的整个页将在输出缓存中存储100秒,而与用户控件较短的时间设置无关。三是如果页面输出缓存过期时间比用户控件的输出缓存过期时间短,则即使已为某个请求重新生成该页面的其余部分,也将一直缓存用户控件直到其过期时间到期为止。例如,如果页面输出缓存设置为50秒,而用户控件输出缓存设置为100秒,则页面其余部分每到期两次,用户控件才到期一次。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
找专业防水队做完还漏水怎么维权 法院会受理房屋漏水造成的纠纷吗? 巴西龟最长活多久,家养!!! 养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 蒙面唱将 嗑瓜子的猫唱了哪些歌 江苏卫视蒙面歌王第二季爱嗑瓜子的猫是谁 哪句话将永远激励我努力学习,奋发向上? 关于英语发音的问题 佛教人努力学习,奋发向上的句子 vary by as much as three stone什么意思 沙县小吃炒米粉热量 激励自己奋发向上,努力学习的对联 vary with和vary by有什么不同,最好有英文解释和例句 今天吃了一碗花生粥、一盒炒粉、三个馒头、一大碗饭一个面包一小包饼干、一包辣条、帮我计一下热量 激励学习奋发向上的名言格言有什么 vary with 和vary by都是随......变化,那有什么区别呢? 哪句话让我们努力学习,奋发向上? 激励自己努力学习,奋发向上的名言警句或名人名言 电信宽带1tb能下多少部电影 电信宽带有什么限制问题? 电信光纤突然被限速 100m电信宽带上行限速多少 下行限速多少 6个人用,自己拉的网 电信宽带跑多少g就限速了 电信宽带限速 奋发向上努力学习的说说 帮忙答英语选择题,最好说明为什么 蒙面唱将猜猜猜爱嗑瓜子的猫是谁 一盒炒河粉的热量 讲文明尊敬老师努力学习奋发向上相关的作文 怎样做一名奋发向上崇德向上的好学生 滴答拼车不论几点都可以么 有关刻苦学习,积极向上的成语 蒙面歌王,嗑着瓜子的猫是谁 一份炒米粉的热量有多少? 蒙面唱将猜猜猜嗑着瓜子的猫真实身份是谁 蒙面唱将猜猜猜 嗑瓜子的猫不是龚琳娜我退出中国歌坛。 蒙面唱将猜猜猜嗑瓜子的猫揭面了吗 不是吴莫愁是萨顶顶吗 蒙面唱将猜猜猜中嗑瓜子的猫的个人才艺喊麦是哪首歌? 嗑着瓜子的猫的真面目 国梦而努力学习 奋发向上 怎么将苹果联系人导入sim卡 蒙面唱将猜猜猜里面那个嗑瓜子的猫那么明显怎么还没被猜出来啊? 蒙面唱将猜猜猜里面那个嗑瓜子的猫那么明显怎么还没被猜出来啊? 英语翻译 急用 请大家帮忙啦~~~