页面级缓存@ OutputCache

       最近要用到缓存,所以才去找了相关资料,开始在一个用户控件头加入@ OutputCache指令,发现第一次进入页面是对了,第二次再进入时就出错了。郁闷……
这里@ OutputCache的一些参数说明:

       以声明的方式控制 ASP.NET 页或页中包含的用户控件的输出缓存策略。有关输出缓存的更多信息,请参见 ASP.NET 缓存功能。

<%@ OutputCache Duration="#ofseconds" Location="Any | Client | Downstream | Server | None" Shared="True | False" VaryByControl="controlname" VaryByCustom="browser | customstring" VaryByHeader="headers" VaryByParam="parametername" %>

一、属性

Duration
页或用户控件进行缓存的时间(以秒计)。在页或用户控件上设置该属性为来自对象的 HTTP 响应建立了一个过期策略,并将自动缓存页或用户控件输出。
注意   该属性是必需的。如果未包含该属性,将出现分析器错误。

Location
OutputCacheLocation 枚举值之一。默认值为 Any。
警告   包含在用户控件(.ascx 文件)中的 @ OutputCache 指令不支持此属性。

Shared
一个布尔值,确定用户控件输出是否可以由多个页共享。默认值为 false。有关详细信息,请参见备注部分。
注意   包含在 ASP.NET 页(.aspx 文件)中的 @ OutputCache 指令不支持此属性。

VaryByCustom
表示自定义输出缓存要求的任意文本。如果赋予该属性的值是 browser,缓存将随浏览器名称和主要版本信息的不同而不同。如果输入了自定义字符串,您必须在应用程序的 Global.asax 文件中重写 HttpApplication.GetVaryByCustomString 方法。

VaryByHeader
分号分隔的 HTTP 标头列表,用于使输出缓存发生变化。当将该属性设为多标头时,对于每个指定的标头,输出缓存都包含一个请求文档的不同版本。
注意   设置 VaryByHeader 属性在所有 HTTP 1.1 缓存中启用缓存项,而不仅限于 ASP.NET 缓存。用户控件中的 @ OutputCache 指令不支持此属性。

VaryByParam
分号分隔的字符串列表,用于使输出缓存发生变化。默认情况下,这些字符串与用 GET 方法属性发送的查询字符串值对应,或与用 POST 方法发送的参数对应。当将该属性设置为多参数时,对于每个指定的参数,输出缓存都包含一个请求文档的不同版本。可能的值包括 none、* 和任何有效的查询字符串或 POST 参数名称。
警告   在输出缓存 ASP.NET 页时,该属性是必需的。它对于用户控件也是必需的,除非已经在用户控件的 @ OutputCache 指令中包含了 VaryByControl 属性。如果没有包含它,则发生分析器错误。如果您不想使缓存内容随任何指定参数发生变化,请将该值设为 none。如果要使输出缓存根据所有参数值发生变化,请将属性设置为 *。

VaryByControl
一个分号分隔的字符串列表,用于更改用户控件的输出缓存。这些字符串代表在用户控件中声明的 ASP.NET 服务器控件的 ID 属性值。有关详细信息,请参见缓存 ASP.NET 页的某些部分。
注意   除非已经包含了 VaryByParam 属性,否则在用户控件 @ OutputCache 指令中,该属性是必需的。ASP.NET 页中的 @ OutputCache 指令不支持该属性。

二、备注
为页输出缓存设置值与通过 HttpResponse.Cache 属性操作 HttpCachePolicy.SetExpires 和 HttpCachePolicy.SetCacheability 方法相同。如果在创建用户控件时设置 VaryByParam 属性,可实现该控件的部分页缓存。

如果 Web 窗体页要求用户查看授权,则输出缓存将 Cache-Control HTTP 标头设置为 private。有关所有这些主题的详细信息,请参见缓存 ASP.NET 页。

如果将 Shared 属性设置为 true,则缓存的用户控件输出可以被多个 Web 窗体页访问。如果不设置为 true,默认行为是为包含用户控件的每一页缓存用户控件输出的一个版本。通过启用 Shared 属性,可以潜在地节省大量的内存。有关详细信息,请参见缓存 ASP.NET 页的某些部分。

三、示例
下面的示例说明了如何设置页或用户控件进行输出缓存的持续时间。

<%@ OutputCache Duration="100" VaryByParam="none" %>
下一个示例说明了如何指示输出缓存来对页或用户控件进行缓存,此缓存处理是根据来自窗体的 POST 或来自查询字符串的位置和计数窗体参数进行的。每个收到的具有不同位置或计数参数(或两者)的 HTTP 请求都进行 10 秒的缓存处理。带有相同参数值的任何后继请求都将从缓存中得到满足,直至超过输入的缓存期。

<%@ OutputCache Duration="100" VaryByParam="location;count" %>

转载于:https://www.cnblogs.com/baoposhou/archive/2006/04/20/380636.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/251559.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

$.ajax的一些坑啊

1.如果发送ajax返回的数据为json务必设置其 Content-Type:application/json;charsetUTF-8不然会导致其success:function(data)中的data返回的为字符串&#xff0c;导致后面的文本解析失败 转载于:https://www.cnblogs.com/lonecloud/p/7794670.html

JavaScript --- 解析Cookie

var parseCookie function(cookie){var cookies {};if(!cookie){return cookies;}var list cookie.split(;);for (var i0;i<list.length;i){var pair list[i].split();cookies[pair[0].trim()] pair[1];}return cookies; };

DDR3和eMMC区别

DDR3内存条和eMMC存储器区别&#xff1a; 1. 存储性质不同&#xff1b;2. 存储容量不同&#xff1b;3. 运行速度不同&#xff1b;4. 用途不同。 具体区别如下&#xff1a; 1、存储性质不同&#xff1a;eMMC是非易失性存储器&#xff0c;不论在通电或断电状态下&#xff0c;数据…

Sql Server临时表中插入标示列

select ROW_NUMBER() over( order by sort_id asc) as rows,* into #tmp_tb from tb_district 其中sort_id为您原表的排序列。 tb_district为要操作的表。 转载于:https://www.cnblogs.com/daretodream/archive/2013/04/03/2997800.html

17秋 软件工程 团队第五次作业 Alpha Scrum3

17秋 软件工程 团队第五次作业 Alpha Scrum3 今日完成的任务 杰麟&#xff1a;java后端学习&#xff1b;世强&#xff1a;Android的部门基础信息模块的信息显示和对接后台&#xff1b;港晨&#xff1a;后台管理登陆界面ui设计&#xff1b;树民&#xff1a;超级管理员Web后端数据…

Node --- Basic认证

Basic认证: 当客户端与服务器端进行请求时,允许通过用户名和密码实现的一种身份认证方式. // 如果一个页面需要Basic认证,它会检查请求报文头中的Authorization字段的内容,该字段的值由认证方式和加密值构成: $ curl -v "http://user:passwww.baidu.com/" > GET …

用列表+for循环生成乘法口诀表

1 # 结合一下列表生成&#xff0c; 准备设计乘法表2 # numlist [1,2,3,4,5]3 # [pow(i,3) for i in numlist]4 # ## [1, 8, 27, 64, 125]5 # [[pow(i,2), pow(i,3), pow(i,4) ] for i in numlist]6 # ## [[1, 1, 1], [4, 8, 16], [9, 27, 81], [16, 64, 256], [25, 125, 625]]…

event.target【转载】

[转载] 1.this和event.target的区别&#xff1a; js中事件是会冒泡的&#xff0c;所以this是可以变化的&#xff0c;但event.target不会变化&#xff0c;它永远是直接接受事件的目标DOM元素&#xff1b; 2.this和event.target都是dom对象&#xff0c;如果要使用jquey中的方法可…

node --- http数据上传

// 通过报头的Transfer-Encoding或Content-Length即可判断请求中是否带有内容 var hasBody function(req) {return transfer-encoding in req.headers || content-length in req.headers; };// 在HTTP_Parser解析报头结束后,报文内容部分会通过data事件触发 function (req, re…

MVC是架构模式,而不是设计模式

最早学编程的时候看过一些书&#xff0c;印象深刻的一本书《设计模式解析》&#xff0c;那本书给我后来的工作提供了很大的帮助。 他叫我站在问题模型的立场上指定解决方法&#xff0c;也教会了我软件设计中每个问题都可以细化到到不可再分割的原子性。 在那书以后看到过一些设…

msp430入门编程42

msp430中C语言的软件工程--事件触发程序结构 转载于:https://www.cnblogs.com/guochaoxxl/p/7812773.html

使用DataTable作为存储过程的参数

最近工作中写了几个存储过程&#xff0c;需要向存 储过程中传递字符串&#xff0c;因为SQL Server 2000中没有内置类似于 split 的函数&#xff0c;只好自己处理&#xff0c;将前台数据集中的一列用逗号拆分存到一个List中&#xff0c;再转化为字符串传给存储过程&#xff0c;很…

CodeForces - 976F Minimal k-covering

Description 给你一张左边 \(n_1\) 个点&#xff0c;右边 \(n_2\) 个点&#xff0c; \(m\) 条边的二分图。对于每一个 \(0\le k\le minDeg\) &#xff0c;求选取哪些边可以使每个点的度数都不小于 \(k\) 。 \(1\le n_1,n_2\le 2000\) &#xff0c; \(m\le 2000\) Solution 大力…

进制转换详细解说

进制的由来&#xff1a;任何数据在计算机中都是以二进制的形式存在的。二进制早起由电信号开关演变而来。 一个整数在内存中一样也是二进制的&#xff0c;但是使用一大串的1或者0组成的数值进行使用很麻烦 所以就想把一大串缩短点&#xff0c;讲二进制中的三位用一位表示。 这三…

删除Windows 7自动创建的隐藏分区

如果你安装了Windows 7测试版&#xff0c;在安装完成后发现Windows 7自动划出一个隐藏的分区&#xff0c;大小为200MB的。又不懂该怎样删除&#xff1f; 其实这个隐藏分区的删除比较麻烦的&#xff0c;如果贸然使用DM等分区工具来删除&#xff0c;会损坏硬盘的分区表。即使是使…

jQuery --- 简单操作合集

// 获取所有<p>元素 $("p");// 获取一个ID为myDiv的<div>元素 $("div#myDiv");// 获取所有type属性等于"text"的<input>元素 $("input[typetext]");// 获取所有p元素并隐藏它们 $("p").hide();// 获取ID为…

6.2 常见多媒体标准及压缩技术

MPEG-1是视频的压缩标准.这个标准是在1993年8月份发布的.标准就规定了视频文件以每秒钟1.5MB的速率来传输数字媒体它的运动图像以及伴音的编码.这个标准它包括了五个部分. MPEG-2它是1994年推出来的一个压缩标准&#xff0c;也是用于视频的。MPEG-2、MPEG-4、MPEG-7、MPEG-21它…

Single Number II

2018-06-17 14:04:27 问题描述&#xff1a; 问题求解&#xff1a; 方法一、如果对空间复杂度没有要求&#xff0c;那么直接使用HashMap对每个数字出现次数进行计数&#xff0c;最后对HashMap遍历一遍即可&#xff0c;总的时间复杂度为O(n)&#xff0c;空间开销较大。 方法二、对…

JavaScript --- 自定义优先级队列

根据HTTP1.1的规范,一个客户端在同一时刻与同一域名不能有两个以上的连接。为了完全符合HTTP1.1,一个典型的解决方案就是使用优先级队列.下面是自定义的优先级队列 /** * 用原型模式定义PriorityQueue的方法, * 如果没有定义_compare()方法,那么第一个方法就是默认的_compare(…

可添加至收藏夹并在浏览器地址栏运行的JS代码

编辑当前网页 代码如下&#xff1a; javascript:document.body.contentEditabletrue; document.designModeon; void 0 无敌图片风火轮 在地址栏运行下面的代码可提取所有图片元素在页面上滚动显示&#xff0c;属于网页显示特效。 代码如下&#xff1a; javascript:R0; x1.1; y1…