ASP.NET 缓存(七)--根据参数缓存页的版本http://www.opent.cn/?action=show&id=194
2008-01-15 16:42
726 查看
如果您使用 GET 和 POST HTTP 方法从用户收集信息,根据用户的输入的不同,它们可以生成不同的响应。带有查询字符串的 GET 请求和 POST 请求与用来从用户收集信息的 HTML 窗体关联。根据这些参数,您可以缓存页响应的多个版本。要完成该操作,您可以使用@ OutputCache 指令的 VaryByParam 属性或 HttpCachePolicy.VaryByParams 属性。
根据查询字符串或窗体 POST 参数以声明方式缓存页输出的多个版本
将 @OutputCache 指令包括在您要缓存的 .aspx 文件中。一定要将必需的 Duration 属性设置为大于零的值。
使用 VaryByParam 属性设置根据其改变页的查询字符串或窗体 POST 参数。将下面的示例包括在 .aspx 文件的顶部会为每个到达的具有不同
注意 如果要通过多个参数改变输出缓存,则使用分号分隔的列表在 VaryByParam 属性中定义它们。如果要根据所有的参数值来改变缓存,请将该属性设置为星号 (*)。
根据查询字符串或窗体 POST 参数以编程方式缓存页输出的多个版本
在该页的代码声明块或代码隐藏类中,使用 Response.Cache 语法为已缓存的页面内容设置到期和可见性策略。您可以分别使用 HttpCachePolicy.SetExpires 和 HttpCachePolicy.SetCacheability 方法来完成此任务。
在相同的代码中,将参数名指定为 VaryByParams 属性的参数,并将该属性设置为 true。当具有不同
注意 如果要通过多个参数改变输出缓存,则使用分号分隔的列表将它们包括在 VaryByParams 参数中。如果要根据所有的参数值来改变缓存,请将该属性设置为星号 (*)。下面的示例演示根据
下面的讨论详细说明如何根据具有不同值的传入请求来缓存页的版本,这些传入请求中的值是在窗体 POST 或查询字符串参数中传递的。
您的应用程序包含一个 .aspx 文件 (
根据查询字符串或窗体 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#] [code]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=dallas http://www.microsoft.com/caching/mycache.aspx?count=10&city=newyork http://www.microsoft.com/caching/mycache.aspx?city=dallas http://www.microsoft.com/caching/mycache.aspx?city=seattle[/code] 因为您指示输出缓存只根据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=192
- ASP.NET 缓存(四)--使用缓存键依赖项缓存页输出http://www.opent.cn/?action=show&id=191
- MFC 弹出窗口MessageBox的使用[转自http://www.bigasp.com.cn/blog/?action=show&id=51]
- 做了个非常简单的Flash验证码(附源代码) 转载于http://www.cordyblog.cn/?action=show&amp;id=68
- 因ARP欺骗网站源文件被注入了代码http://www.cnbruce.com/blog/showlog.asp?cat_id=32&log_id=1191
- 解决ASP(图像)上传漏洞的方法http://www.cnbruce.com/blog/showlog.asp?cat_id=26&log_id=942
- VS .NET 2005中水晶报表的使用 http://www.tianyablog.com/blogger/post_show.asp?BlogID=116800&PostID=9731765
- [转]ASP.NET 缓存(六)--根据参数缓存页的版本
- 转:小结一下团队协作中的开源应用 转自:http://www.lingang.gd.cn/?action=show&id=329
- [转]ASP.NET 缓存(七)--根据 HTTP 标头缓存页的版本
- 踏入社会(http://www.sysinfo.cn/index.php?action=show&id=90)
- http://www.cppdev.cn/show.aspx?id=33&cid=6
- 女人:换一个爱情姿势好吗 转自 http://groups.tianya.cn/bulo/ShowArticle.asp?buloid=237&amp;ArticleID=413747&amp;idWriter=15308611&amp;key=59653
- [转]ASP.NET 缓存(十二)--根据参数缓存用户控件的多个版本
- HTML在线编辑器的原理(转载整理)http://www.cnbruce.com/blog/showlog.asp?log_id=1168
- http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=10102&courseid=0
- windows进程中的内存结构http://www.ieee.org.cn/dispbbs.asp?boardID=63&ID=39490
- http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=10594&courseid=4
- 明基成人礼:巅峰战将营 http://www.cnvn.com.cn/Article/ShowArticle.asp?ArticleID=3172
- [转]ASP.NET 缓存(八)--根据请求浏览器缓存页的版本