提高性能最好最快的办法当然是通过缓存来改善,对于任何一个web开发者都应该善用缓存。Asp.net下的缓存机制十分强大,用好缓存机制可以让我们极大的改善web应用的性能.

  提高性能最好最快的办法当然是通过缓存来改善,对于任何一个web开发者都应该善用缓存。Asp.net下的缓存机制十分强大,用好缓存机制可以让我们极大的改善web应用的性能,下面是一些总结的缓存的知识点,与大家分享交流:

  1.页面缓存

  要实现页面输出缓存,只要将一条 OutputCache 指令添加到页面即可。

  CacheProfile

  用于定义与该页关联的缓存设置的名称。是可选属性,默认值为空字符("")。需要注意的是,包含在用户控件中的@ OutputCache指令不支持此属性。在页面中指定此属性时,属性值必须与Web.config文件配置节下的outputCacheProfiles元素中的一个可用项的名称匹配。如果此名称与配置文件项不匹配,将引发异常。

  NoStore

  该属性定义一个布尔值,用于决定是否阻止敏感信息的二级存储。需要注意的是,包含在用户控件中的@ OutputCache指令不支持此属性。将此属性设置为true等效于在请求期间执行代码“Response.Cache.SetNoStore();”。

  Duration

  用于设置页面或者用户控件缓存的时间。单位是秒。通过设置该属性,能够为来自对象的HTTP响应建立了一个过期策略,并将自动缓存页或用户控件输出。需要注意的是,Duration属性是必需的,否则将会引起分析器错误。

  Shared

  该属性定义一个布尔值,用于确定用户控件输出是否可以由多个页共享。默认值为false。注意,包含在ASP.NET页中的@ OutputCache指令不支持此属性。

  Location

  用于指定输出缓存项的位置。其属性值是OutputCacheLocation枚举值,它们是Any、Client、Downstream、None、Server和ServerAndClient。默认值是Any,表示输出缓存可用于所有请求,包括客户端浏览器、代理服务器或处理请求的服务器上。需要注意的是,包含在用户控件中的@ OutputCache指令不支持此属性。

  SqlDependency

  该属性标识一组数据库/表名称对的字符串值,页或控件的输出缓存依赖于这些名称对。需要注意:SqlCacheDependency类监视输出缓存所依赖的数据库中的表,因此,当更新表中的项时,使用基于表的轮询将从缓存中移除这些项。当通知(在SQL Server 2005中)与CommandNotification值一起使用时,最终将使用SqlDependency类向SQL Server 2005服务器注册查询通知。另外,SqlDependency属性的CommandNotification值仅在ASP.NET页中有效。控件只能将基于表的轮询用于@ OutputCache指令。

  VaryByControl

  该属性使用一个分号分隔的字符串列表来更改用户控件的输出缓存。这些字符串代表在用户控件中声明的ASP.NET服务器控件的ID属性值。除非已经包含了VaryByParam属性,否则在@ 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”。如果要使输出缓存根据所有参数值发生变化,则将属性设置为“*”。

  创建页面输出缓存文件依赖

  示例代码:Response.AddFileDependency(MapPath("test.xml"));

  如需要建立依赖多文件关系,则使用AddFileDependencies()方法。

  使用编程方式设置页面缓存过期

  示例代码:HttpResponse.RemoveOutputCacheItem(Page.ResolveUrl("~/test.aspx"));

  此方法只接受一个"虚拟绝对"路径,因此需用Page.ResolveUrl()方法转换

  使用编程方式设置多个页面缓存过期(创建键依赖(key dependency))

  示例代码:

  缓存页面:PageLoad:


     Cache.Insert(“key”,DateTime.Now);
  Response.AddCacheItemDependency("key");

  通过此法向多个页面添加依赖项

  移除依赖项:PageLoad:

  Cache.Remove("key");

  以编程方式操作页面输出缓存

  操作由Response.Cache属性暴露的HttpCachePolicy类对象的方法。

  创建页面输出缓存配置

  

<system.web>
          <caching>
                <outputCacheSettings>
                    <outputCacheProfiles>
                            <add name="CacheProfile1" duration="60" />
                    </outputCacheProfiles>
                </outputCacheSettings>
          </caching>
       </system.web>

资料引用:http://www.knowsky.com/534693.html

  2.部分页面缓存

  缓存后替换

  采用声明方式,使用Substitution控件,设置MethodName属性所需的方法,此方法必须是静态方法,因为当前页输出缓存时,页面实例还没被创建。注:AdRotator内部使用了缓存后替代。

  以编程方式设置缓存后替换,使用Response.WriteSubstitution()方法,好处:1,此方法引用的方法不一定是当前类的方法,可以是另一个类的实力或静态方法。2,可以在自定义控件中使用此方法实现缓存后替换。

  部分页面缓存:用户控件缓存

  给用户控件添加指令。此指令包含一个Shared属性,可设置共享用户控件的输出缓存。

  以编程方式设置用户控件缓存

  当用户控件中包括指令时,可以通过用户控件的CachePolicy属性所暴露的ControlCachePolicy类的实例的属性控制修改空间如何缓存。

  创建用户控件缓存的文件依赖

  可以使用CacheControlPolicy.Dependency属性在一个缓存了的用户控件和文件系统中一个文件间创建一个依赖,示例代码:

  PageLoad:


     CacheDependency depend=new CacheDependency(MapPath("~/test.xml"));
  this.CachePolicy.Dependency=depend;

  缓存动态载入的用户控件

  可以使用Page.LoadControl()方法载入用户控件,当具有缓存特性的用户控件被载入时,Asp.net Framework自动一个PartialCachingControl类的实例包装用户控件。示例代码:

  PageLoad:


      PartialCachingControl cacheme=(PartialCachingControl)Page.LoadControl("test.ascx");
  Cacheme.CachePolicy.SetExpires(DateTime.Now.AddSeconds(10));
  PlaceHolder1.Controls.Add(cacheme);
  Lable1.Text=cacheme.CachePolicy.Duration.ToString();

  3.使用DataSource缓存

  SqlDataSource、ObjectDataSource、XmlDataSource控件都包括了用于缓存DataSource承载的属性,好处是数据源控件可以在数据更新时自动重新载入数据。并且可以在多个页面间共享相同的数据,通过一些属性的组合来识别:SelectCommand、SelectParameters、ConnectionString。如果属性相同,即共享相同的缓存数据。

  通过设置属性设置缓存过期策略

  包括绝对缓存(EnableCaching="True" CacheDuration=“xxx”)和Sliding缓存(EnableCaching="True" CacheExpirationPolicy="Sliding" CacheDuration=“xxx”)

  使用ObjectDataSource控件缓存

  通过设置控件的EnableCaching、CacheExpirationPolicy、CacheDuration属性以及SelectMethod所制定的方法名来完成。

  使用XmlDataSource控件缓存

  设置DataFile属性创建一个文件依赖。

  创建数据源控件键值依赖

转载于:https://www.cnblogs.com/qiaojun/articles/1514041.html

ASP.Net缓存 1相关推荐

  1. 浅谈ASP.NET 缓存技术

    缓存是指系统或应用程序将频繁使用的数据保存到内存中,当系统或应用程序再次使用时,能构快速的获取数据.它的弊端在于显示的内容可能不是最新,最精确的.ASP.Net 缓存主要分为两大类: 网页输出缓存和应 ...

  2. petshop4.0 详解之四(PetShop之ASP.NET缓存)

    <p>如果对微型计算机硬件系统有足够的了解,那么我们对于Cache这个名词一定是耳熟能详的.在CPU以及主板的芯片中,都引入了这种名为高速缓冲存储器(Cache)的技术.因为Cache的存 ...

  3. asp.net缓存机制

    一.缓存的类别 1.页面输出ASP.NET数据缓存 页面输出缓存是一种传统级别的相对简单的缓存机制.它将页面数据缓存在服务器内存中,当有客户端再次请求这些内容的时候,服务器可以直接将这些页面数据输出, ...

  4. [转]ASP.Net缓存总结

    ASP.Net缓存总结 Asp.net 缓存技术总结 2008-04-01 17:29 提高性能最好最快的办法当然是通过缓存来改善,对于任何一个web开发者都应该善用缓存.Asp.net下的缓存机制十 ...

  5. PetShop之ASP.NET缓存

    <解剖PetShop>系列之四 四 PetShop之ASP.NET缓存 如果对微型计算机硬件系统有足够的了解,那么我们对于Cache这个名词一定是耳熟能详的.在CPU以及主板的芯片中,都引 ...

  6. PetShop 4.0 详解之四(PetShop之ASP.NET缓存)

    如果对微型计算机硬件系统有足够的了解,那么我们对于Cache这个名词一定是耳熟能详的.在CPU以及主板的芯片中,都引入了这种名为高速缓冲存储器(Cache)的技术.因为Cache的存取速度比内存快,因 ...

  7. ASP.NET缓存全解析4:应用程序数据缓存(转)

    ASP.NET缓存全解析文章索引 ASP.NET缓存全解析1:缓存的概述 ASP.NET缓存全解析2:页面输出缓存 ASP.NET缓存全解析3:页面局部缓存 ASP.NET缓存全解析4:应用程序数据缓 ...

  8. PetShop之ASP.NET缓存(转载)

    <解剖PetShop>系列之四 四 PetShop之ASP.NET缓存 如果对微型计算机硬件系统有足够的了解,那么我们对于Cache这个名词一定是耳熟能详的.在CPU以及主板的芯片中,都引 ...

  9. ASP+页缓存OutputCache Duration用法

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

最新文章

  1. qt下实现文件的拖拽打开
  2. java cas原理_Java并发之原子变量及CAS算法-上篇
  3. 浅入MFC之对话框及MFC程序的运行
  4. python打乱列表的方法_python打乱列表
  5. 改变Eclipse标记高亮的颜色
  6. 图片水印工具类java
  7. python优化网站_小旋风网站优化 - 致力于Python高品质站群系统的产品研发
  8. 摄像头 RTSP 以及远程管理
  9. 笔记本显示电源已连接但是未充电的简单解决办法
  10. AT绑定句柄无效和拒绝访问
  11. Ribbon饥饿加载
  12. 标准之争:影响 IPv6 部署的经济学因素
  13. App设计的基本原则和规范
  14. 拉普拉斯变换的物理意义是什么?
  15. 若依前后端分离系统-后端遇到的坑
  16. docker 阿里云使用记录
  17. 【2019年04月03日】A股最便宜的股票
  18. 未约定经济补偿的竞业禁止条款是否无效
  19. 测试眉形的有哪个软件_测脸型配眉形的软件
  20. qt中出现out-of-line definition of 'Widget' does not match any declaration in 'Widget'问题的解决

热门文章

  1. 把List对象或者单值对象转换为Json格式
  2. Linux多线程实践(六)使用Posix条件变量解决生产者消费者问题
  3. php artisan 命令
  4. 12天学好C语言——记录我的C语言学习之路(Day 12)
  5. 如何在 DB2 Universal Database 中暂时禁用触发器(转)
  6. 线程池,封装使用,实现控制子线程
  7. 获取计算机的信息(IP地址、MAC地址、CUP序列号、硬盘序列号、主板信息等等)...
  8. Mysql的sql语句,Delete 中包含 not in
  9. SmartGit破解方法
  10. 26.多线程join detach