页面部分缓存

news/2024/8/26 16:14:30
 页面部分缓存是指输出缓存页面的某些部分,而不是缓存整个页面内容。实现页面部分缓存有两种机制:一种是将页面中需要缓存的部分置于用户控件(.ascx文件)中,并且为用户控件设置缓存功能(包含用户控件的ASP.NET页面可设置也可不设置缓存)。这就是通常所说的“控件缓存”。设置控件缓存的实质是对用户控件进行缓存配置。主要包括以下3种方法:一是使用@ OutputCache指令以声明方式为用户控件设置缓存功能,二是在代码隐藏文件中使用PartialCachingAttribute类设置用户控件缓存;三是使用ControlCachePolicy类以编程方式指定用户控件缓存设置。另外,还有一种称为“缓存后替换”的方法。该方法与控件缓存正好相反,将页面中的某一部分设置为不缓存,因此,尽管缓存了整个页面,但是当再次请求该页时,将重新处理那些没有设置为缓存的内容。  使用@ OutputCache指令   控件缓存与页面输出缓存的@ 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=fooselectedid=0 http://localhost/mypage.aspx?categoryid=fooselectedid=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”的服务器控件(例如下拉框控件),那么缓存将根据该控件的变化来存储用户控件数据。

http://www.niftyadmin.cn/n/3682144.html

相关文章

Linux常用查询文件或日志命令

常见查询文件内容命令汇总如下: cat filename 查看日志,会打开整个文件,直接跑到最后面。tac filename 查看日志,会打开整个文件,倒序显示,不常用。more filename 查看日志,可以上下翻页&#…

loj#6285 数列分块入门 9 ( 回 滚 )

题目 : 链接 :https://loj.ac/problem/6285 题意:给出一个长为 n的数列,以及 n个操作,操作涉及询问区间的最小众数。 思路:虽然这不是一道 回滚莫队题,就是 暴力分块 的题, 但是 还…

使用Java实现一个缓存

啥也不说,直接上代码,欢迎指正。 package com.example.demo.cache;/*** className: JdkCache* description: TODO 类描述* author: Yang.H* date: 2021/8/2014:26**/import lombok.extern.slf4j.Slf4j;import java.util.Date; import java.util.Map; im…

【Java基础】之集合

集合 集合继承图 Collection 继承图 常用方法 1. add:添加元素 2. remove:删除指定元素,或指定下标。重载; 3. contains:查找指定元素是否存在 4. size:获取元素的个数 5. isEmpty:判断集合是否为空; 6. clear&…

洛谷P1147连续自然数和

采用前缀和思想&#xff0c;用二分查找寻找区间&#xff0c;时间复杂度O(nnlogn) #include<bits/stdc.h> #define maxn 2000000 using namespace std; long long arr[maxn1]; long long brr[maxn1]; int main() {brr[0]0;for(int i1;i<maxn;i){arr[i]i;brr[i]brr[i-1]…

ASP.NET:使用web.config文件进行配置

web.config配置文件中所有的配置设置都应该位于 <configuration> <system.web> 和 </system.web> </configuration> 之间. web.config的设置对于整个应用程序起作用&#xff0c;同时程序中随时可以调用web.config中的节点设置及关键key的值。web.c…

python开发学习

Python开发学习 一、Linux基础 Linux安装&#xff0c;Linux基本命令&#xff0c;Linux文件系统&#xff0c;Linux权限管理&#xff0c;Linux用户管理&#xff0c;Linux编辑器vim&#xff0c;shell脚本&#xff0c;Linux防火墙&#xff0c;Linux-LNMP架构原理搭建。 二、Python基…

Global.asax文件中触发那些事件

Application对象创建和结束时所触发的事件有    Application_Start    Application_End   Session对象创建和结束时所触发的事件有    Session_Start    Session_End   对程序有请求发生时触发的事件有 (按发生顺序排列)    Application_BeginRequest    Appli…