ASP.NET 缓存(七)--根据参数缓存页的版本http://www.opent.cn/?action=show&id=194
来源:互联网 发布:彩虹岛登陆网络传输 编辑:程序博客网 时间:2024/06/05 15:57
如果您使用 GET 和 POST HTTP 方法从用户收集信息,根据用户的输入的不同,它们可以生成不同的响应。带有查询字符串的 GET 请求和 POST 请求与用来从用户收集信息的 HTML 窗体关联。根据这些参数,您可以缓存页响应的多个版本。要完成该操作,您可以使用@ OutputCache 指令的 VaryByParam 属性或 HttpCachePolicy.VaryByParams 属性。
根据查询字符串或窗体 POST 参数以声明方式缓存页输出的多个版本
- 将 @OutputCache 指令包括在您要缓存的 .aspx 文件中。一定要将必需的 Duration 属性设置为大于零的值。
- 使用 VaryByParam 属性设置根据其改变页的查询字符串或窗体 POST 参数。将下面的示例包括在 .aspx 文件的顶部会为每个到达的具有不同
City
参数值的请求缓存不同版本的页输出。<%@ OutputCache duration="60" varybyparam="City" %>
注意 如果要通过多个参数改变输出缓存,则使用分号分隔的列表在 VaryByParam 属性中定义它们。如果要根据所有的参数值来改变缓存,请将该属性设置为星号 (*)。
根据查询字符串或窗体 POST 参数以编程方式缓存页输出的多个版本
- 在该页的代码声明块或代码隐藏类中,使用 Response.Cache 语法为已缓存的页面内容设置到期和可见性策略。您可以分别使用 HttpCachePolicy.SetExpires 和 HttpCachePolicy.SetCacheability 方法来完成此任务。
- 在相同的代码中,将参数名指定为 VaryByParams 属性的参数,并将该属性设置为 true。当具有不同
City
参数值的请求到达服务器时,下面的代码缓存页的多个版本。[C#] Response.Cache.VaryByParams["City"] = true; [Visual Basic] Response.Cache.VaryByParams("City") = true
注意 如果要通过多个参数改变输出缓存,则使用分号分隔的列表将它们包括在 VaryByParams 参数中。如果要根据所有的参数值来改变缓存,请将该属性设置为星号 (*)。
下面的示例演示根据
City
和ZipCode
参数改变页输出。[C#]
Response.Cache.VaryByParams["City;ZipCode"] = true;
[Visual Basic]Response.Cache.VaryByParams("City;ZipCode") = true
下面的讨论详细说明如何根据具有不同值的传入请求来缓存页的版本,这些传入请求中的值是在窗体 POST 或查询字符串参数中传递的。
您的应用程序包含一个 .aspx 文件 (Mycache.aspx
),并且指定应该根据 city
参数缓存页的不同版本。到达了四个带有查询字符串的请求:两个带有 count
参数,四个带有 city
参数。
http://www.microsoft.com/caching/mycache.aspx?count=10&city=dallashttp://www.microsoft.com/caching/mycache.aspx?count=10&city=newyorkhttp://www.microsoft.com/caching/mycache.aspx?city=dallashttp://www.microsoft.com/caching/mycache.aspx?city=seattle
因为您指示输出缓存只根据 city
参数进行改变,所以缓存页输出的三个版本,一个用于 dallas
,一个用于 newyork
,一个用于 seattle
。第一个请求(包含 dallas
参数值)导致缓存页输出的一个版本,而第三个请求(也具有一个 dallas
参数值)从输出缓存中获得页的该版本。在这些版本保留在缓存的这段时间中,将从输出缓存满足包含 city
参数,参数值为 dallas
、new york
或 seattle
的请求。
如果要根据 city
和 count
两个参数来改变输出缓存,则缓存该页的四个版本。出现这种情况是因为第一项包含 count
查询字符串参数,而第三项却不包含。如果根据所有可能的参数改变缓存,则将为每个具有唯一参数值的请求创建输出缓存项。在当前示例中,这也是缓存页的四个版本的原因。
注意 只要页的缓存版本未到期,就将用它来满足具有相同键/值对的 GET 查询字符串或 POST 参数,而与这些参数传递的顺序无关。由于 GET 查询字符串和窗体 POST 参数区分大小写,因此如果参数值大小写不一致,则 ASP.NET 会将该参数视为与原缓存项不同,并将页的另一个版本输入输出缓存中。
- ASP.NET 缓存(七)--根据参数缓存页的版本http://www.opent.cn/?action=show&id=194
- ASP.NET 缓存(四)--使用缓存键依赖项缓存页输出http://www.opent.cn/?action=show&id=191
- ASP.NET 缓存(五)--使用文件依赖项缓存页输出http://www.opent.cn/?action=show&id=192
- 踏入社会(http://www.sysinfo.cn/index.php?action=show&id=90)
- MFC 弹出窗口MessageBox的使用[转自http://www.bigasp.com.cn/blog/?action=show&id=51]
- 做了个非常简单的Flash验证码(附源代码) 转载于http://www.cordyblog.cn/?action=show&id=68
- http://www.lihuasoft.net/news/show.php?id=4395
- 转:小结一下团队协作中的开源应用 转自:http://www.lingang.gd.cn/?action=show&id=329
- http://www.cppdev.cn/show.aspx?id=33&cid=6
- 网络蜘蛛原理~ 转 http://www.sysinfo.cn/show.php?id=35
- JavaScript面向对象的支持 http://www.cnrui.cn/blog/article.asp?id=80
- 如何关闭WebEditor在线编辑器的远程自动上传功能http://www.jn10086.cn/boke/article.asp?id=231
- 简单的多人聊天(C#.Socket)转至http://www.lihuasoft.net/article/show.php?id=2724
- http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=10594&courseid=4
- http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=10102&courseid=0
- WEB打印大全(http://www.pcsky.cn/article/list.asp?id=797)
- ADO访问数据库(http://www.impcas.ac.cn/usr/lujun/browse.asp?id=ado)
- 连接sql2005 http://www.ad0.cn/netfetch/article.asp?id=186
- Roller(Weblogic)
- c#中如何删除只读文件
- div跟随javasript
- 得到选中的radiobutton值
- 消防监控方案(ARM)
- ASP.NET 缓存(七)--根据参数缓存页的版本http://www.opent.cn/?action=show&id=194
- FC8下备份linux系统
- 某电子商务网站的投资风险分析
- SQL Server 2005中三种插入XML数据的方法
- javacript 点击图片移动
- 使用JavaMail收发邮件
- 快乐的十八种技巧(趣图) http://hi.baidu.com/jxzq007/blog/item/5316e4ce7a01a60093457e8e.html
- 《女友7.0版》升级成《老婆1.0版》
- VS2003打包時加入卸载功能: