页面部分缓存是指输出缓存页面的某些部分,而不是缓存整个页面内容。实现页面部分缓存有两种机制:一种是将页面中需要缓存的部分置于用户控件(.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”的服务器控件(例如下拉框控件),那么缓存将根据该控件的变化来存储用户控件数据。

转载于:https://www.cnblogs.com/zcy_soft/archive/2010/10/03/1841625.html

ASP.NET 2.0的页面缓存功能介绍相关推荐

  1. 通过 ASP.NET 2.0 的数据增强功能来提高负载和减少代码 --作者:Dino Esposito

    [导读]在ASP.NET 2.0中引入了数据源组件,相对于1.x版本,在开发效率和运行效率上都得到了极大的提升,而本文将详细介绍新的数据控件,包括编程接口.用法和实现. 绝大多数Web应用程序都会使用 ...

  2. asp.net 2.0 + sqlserver2005 数据依赖缓存

    Asp.net 2.0 提供了一个新的数据缓存功能,就是利用sql server2005 的异步通知功能来实现缓存 1.首先在sqlserver2005 中创建一个test的数据库.添加一个 empl ...

  3. ASP.NET 2.0 中的 Theme 功能

    ASP.net 2.0 中新增加了 Theme 的功能,它的出现能让网站实现换肤更加容易. Theme 的实现包括:CSS.Skin.MasterPage. CSS 是用于控制所有 Html 标记的外 ...

  4. Mysql8.0之后没有缓存功能

    尽管MySQL Query Cache旨在提高性能,但它存在严重的可伸缩性问题,并且很容易成为严重的瓶颈.自MySQL 5.6(2013)以来,默认情况下已禁用查询缓存,因为众所周知,它不能与多核计算 ...

  5. 航空订票系统--页面及功能介绍

    前面经过数据逻辑层的分析,本文将从页面的效果以及功能实现代码角度讲述,因为时间以及能力问题,有些功能没有来得及实现,部分页面用模拟数据代替...管理员后台主要使用Ext js框架,前台主要为aspx页 ...

  6. AndroidStudio3.0 下载使用新功能介绍

    谷歌2017发布会更新了挺多内容的,而且也发布了AndroidStudio3.0预览版,一些功能先睹为快.(英语一般,有些翻译不太好) 下载地址 https://developer.android.g ...

  7. 网站安全狗”响应内容保护“网页错误返回页面优化功能介绍

    网站安全狗最新版本(主程序版本号:3.2.08157)在"资源保护"模块多了一个功能叫做:响应内容保护.如下图所示: <ignore_js_op> 该模块的主要功能是, ...

  8. 微信收款接口_企业微信:3.0.26版本新功能介绍

    一.客户联系功能增强 对外收款 员工可以在聊天中直接向微信用户收款了,收款时还可要求顾客填写联系信息方便邮寄.所收款项进入企业的微信支付商户号由企业统一管理,企业还可查看每个员工的收款业绩明细. 其他 ...

  9. ASP.NET 2.0收集

    更多滚动 8 ASP.NET2.0连接SQL Server数据库详解 轩辕南宫| 天极开发|2006-07-10 08:00 本文将详细介绍如何使用Connection对象连接数据库.对于不同的.NE ...

最新文章

  1. ironic驱动-IMPITool
  2. 【Android 异步操作】AsyncTask 异步任务 ( FutureTask 模拟 AsyncTask 执行过程 | AsyncTask 执行过程回顾 | FutureTask 分析 )
  3. Python基础知识-优雅的with as语句
  4. QT的QRadioButton类的使用
  5. 例5-17和例5-18
  6. 百度推出 MIP Baidu Path链接
  7. cmake编译opencv3.0
  8. 看完这篇,终于知道自己会不会 C# 泛型了!
  9. mongodb的基本使用_万金油_新浪博客
  10. 烽火fr2600怎么web登录_烽火配置教程
  11. Convert UOM values
  12. 图片情感研究现状与思考
  13. 粉丝看了教程成功发文章了,恭喜一下,并说下近期计划
  14. python模拟阴阳师抽卡
  15. python回调廖雪蜂_廖雪峰Python总结4
  16. 杰里之主动降噪与物理降噪的区别【篇】
  17. pandas中如何提取DataFrame的某些列
  18. 2022全球九大生态公链排行榜
  19. 佳肴 (Standard IO)
  20. 残差结构Residual、BN(Batch Normalization)

热门文章

  1. 第四篇 HTML 表单深入了解、注释和a标签的运用
  2. ASP.NET设置焦点到输入框
  3. GC DevKit 快速入门 -- 游戏概览(三)
  4. I Love You的真正含义
  5. QTP的那些事--学习QTP必备的网站整理
  6. 从0到1学C++ 第3篇 从结构到类的演变
  7. Object.defineProperty与双向绑定、数据监听
  8. 让互联网拥抱移动VR,三星将发布新版VR浏览器
  9. Spark Streaming 执行流程
  10. Mac OS X Yosemite Arduino安装CH340 USB转串口驱动