目录

关于缓存的介绍,可以参考这里,写的非常好。

缓存的分类:

  • 客户端缓存(Client Caching)
  • 代理缓存(Proxy Caching)
  • 反向代理缓存(Reverse Proxy Caching)
  • 服务器缓存(Web Server Caching)

缓存的好处及应用:

  • 可以让如css,js,image,aspx 等资源文件在第二次访问时读取本地而不用再次请求服务器端,减少客户端对服务器资源请求的压力,加快客户端响应速度。
  • 对于经常使用的数据源,将其存储在数据缓存中或者内存中,这样来减少数据库请求,缓解数据库压力。
  • 将网站部署在多台计算机上,采用分布式方式处理,可以有效解决多个用户请求对一台服务器所造成的压力,加快客户端请求响应(分布式部署)。
  • 将经常访问但数据经常不更新的页面,可以将该页面静态化处理,有效减少服务器压力和客户端响应速度。

当然,上面的只是我个人的见解,如有问题欢迎指正。

ASP.NET 提供了方便的方法来控制缓存。@ OutputCache指令可用于控制页面输出缓存

OutputCache 语法:

<%@ OutputCache Duration="#ofseconds"
   Location="Any | Client | Downstream | Server | None |
     ServerAndClient "
   Shared="True | False"
   VaryByControl="controlname"
   VaryByCustom="browser | customstring"
   VaryByHeader="headers"
   VaryByParam="parametername"
   VaryByContentEncoding="encodings"
   CacheProfile="cache profile name | ''"
   NoStore="true | false"
   SqlDependency="database/table name pair | CommandNotification"
   ProviderName="Provider Name" 
%>

OutputCache 属性:

 参考:http://msdn.microsoft.com/zh-cn/library/hdxfb6cy.aspx

  • Duration:页或用户控件进行缓存的时间(以秒计)。在页或用户控件上设置该特性为来自对象的 HTTP 响应建立了一个过期策略,并将自动缓存页或用户控件输出。
  • Location:OutputCacheLocation 枚举值之一。默认值为 Any。

        Any:输出缓存可位于产生请求的浏览器客户端、参与请求的代理服务器(或任何其他服务器)或处理请求的服务器上。此值对应于 HttpCacheability.Public 枚举值。
        Client:输出缓存位于产生请求的浏览器客户端上。此值对应于 HttpCacheability.Private 枚举值。
        Downstream:输出缓存可存储在任何 HTTP 1.1 可缓存设备中,源服务器除外。这包括代理服务器和发出请求的客户端。
        None:对于请求的页,禁用输出缓存。此值对应于 HttpCacheability.NoCache 枚举值。
        Server:输出缓存位于处理请求的 Web 服务器上。此值对应于 HttpCacheability.Server 枚举值。
        ServerAndClient:输出缓存只能存储在源服务器或发出请求的客户端中。代理服务器不能缓存响应。此值对应于 HttpCacheability.Private 和 HttpCacheability.Server 枚举值的组合。

  • CacheProfile:与该页关联的缓存设置的名称。这是可选特性,默认值为空字符串 ("")。
  • NoStore:一个布尔值,它决定了是否阻止敏感信息的二级存储。
  • ProviderName:一个字符串值,标识要使用的自定义输出缓存提供程序。
  • Shared:一个布尔值,确定用户控件输出是否可以由多个页共享。默认值为 false。
  • SqlDependency: 标识一组数据库/表名称对的字符串值,页或控件的输出缓存依赖于这些名称对。请注意,SqlCacheDependency 类监视输出缓存所依赖的数据库中的表,因此当更新表中的项时,使用基于表的轮询时将从缓存中移除这些项。如果以值 CommandNotification: 使用通知(在 Microsoft SQL Server 2005 中),则最终会使用 SqlDependency 类向 SQL Server 2005 服务器注册查询通知。
  • VaryByCustom: 任何表示自定义输出缓存要求的文本。如果特性的赋值为 browser,缓存将随浏览器名称和主要版本信息的不同而异。如果输入自定义字符串,则必须在应用程序的 Global.asax 文件中重写 GetVaryByCustomString 方法。
  • VaryByHeader: 分号分隔的 HTTP 标头列表,用于使输出缓存发生变化。将该特性设为多标头时,对于每个指定标头组合,输出缓存都包含一个不同版本的请求文档。
  • VaryByParam: 分号分隔的字符串列表,用于使输出缓存发生变化。默认情况下,这些字符串对应于使用 GET 方法特性发送的查询字符串值,或者使用 POST 方法发送的参数。将该特性设置为多个参数时,对于每个指定参数组合,输出缓存都包含一个不同版本的请求文档。可能的值包括 none、星号 (*) 以及任何有效的查询字符串或 POST 参数名称。
  • VaryByControl:分号分隔的字符串列表,用于改变用户控件的输出缓存。这些字符串代表用户控件中声明的 ASP.NET 服务器控件的 ID 属性值。
  • VaryByContentEncodings: 以分号分隔的字符串列表,用于更改输出缓存。将 VaryByContentEncodings 特性用于 Accept-Encoding 标头,可确定不同内容编码获得缓存响应的方式。有关如何指定 Accept-Encoding 标头的更多信息,请参见 W3C 网站上的 Hypertext Transfer Protocol -- HTTP/1.1(超文本传输协议 -- HTTP/1.1)规范的 14.3 节。

关于 OutputCache 的概念就写到这,后面会写到每个属性的使用以及差异化,希望大家多多支持。

OutputCache概念学习的更多相关文章

  1. @OutputCache 详解-文章目录

    OutputCache概念学习 OutputCache属性详解(一)一Duration.VaryByParam OutputCache属性详解(二)一 Location OutputCache属性详解 ...

  2. OutputCache属性详解(一)一Duration、VaryByParam

    目录 OutputCache概念学习 OutputCache属性详解(一) OutputCache属性详解(二) OutputCache属性详解(三) OutputCache属性详解(四)— SqlD ...

  3. OutputCache属性详解(二)一 Location

    目录 OutputCache概念学习 OutputCache属性详解(一) OutputCache属性详解(二) OutputCache属性详解(三) OutputCache属性详解(四)— SqlD ...

  4. OutputCache属性详解(三)— VaryByHeader,VaryByCustom

    目录 OutputCache概念学习 OutputCache属性详解(一) OutputCache属性详解(二) OutputCache属性详解(三) OutputCache属性详解(四)— SqlD ...

  5. OutputCache属性详解(四)— SqlDependency

    目录 OutputCache概念学习 OutputCache属性详解(一) OutputCache属性详解(二) OutputCache属性详解(三) OutputCache属性详解(四)— SqlD ...

  6. ASP.NET MVC随记汇总

    1.学习教程: 1.ASP.NET MVC4入门教程:Asp.Net MVC4入门指南 2.ASP.NET MVC4系类教程 3.ASP.NET MVC学习系列 4.从零开始学习ASP.NET MVC ...

  7. C# - 缓存OutputCache(二)缓存详细介绍

    本文是通过网上&个人总结的 1.缓存介绍 缓存是为了提高访问速度,而做的技术. 缓存主要有以下几类:1)客户端缓存Client Caching 2)代理缓存Proxy Caching 3)方向 ...

  8. C# - 缓存OutputCache(一)基础配置

    本文是通过网上&个人总结的 1. 介绍 OutputCache输出缓存是复制ASP.NET页面,保存在内存的机制.这种行为有助于提高性能,通过返回的缓存达到网页及时响应的目的,减少客户机器需要 ...

  9. ASP.NET 中 OutputCache 指令参数详解

    使用@ OutputCache指令使用@ OutputCache指令,能够实现对页面输出缓存的一般性需要.@ OutputCache指令在ASP.NET页或者页中包含的用户控件的头部声明.这种方式非常 ...

随机推荐

  1. java:关于继承变量的值问题

    1.在java中,如果子类继承父类的静态变量时,当你在子类面前修改这个静态变量的值,其父类的静态变量也会改变. 案例: //父类public class Animal { //静态属性 public ...

  2. angular js 的 ng-keyup 监听 keydown keyup事件获取 keyCode

    参考这个页面.http://www.angularjshub.com/examples/eventhandlers/keyboardevents/ Html页面代码: <input ng-mod ...

  3. IE11浏览器:请不要再叫我IE,谢谢

    这篇对自已挺有用的,特mark一下,纯转载. 转载自:nczonline 微软在上周刚刚发布了用于Windows 8.1上 的首个Internet Explorer 11的预览版.我们已经确认Inte ...

  4. storm trident 示例

    Storm Trident的核心数据模型是一批一批被处理的“流”,“流”在集群的分区在集群的节点上,对“流”的操作也是并行的在每个分区上进行. Trident有五种对“流”的操作: 1.      不 ...

  5. c++中的指针之指针在数组

    使用一维指针数组输出一维数组中的数 int array[]={1,2,3,4,5,6};        int *p; p=array;        for(int i=0;i<6;i++){ ...

  6. PYTHON学习之路_PYTHON基础(4)

    学习内容: 1.Python函数的基本语法 2.Python函数的返回值与变量 3.Python嵌套函数 4.Python递归函数及实例(二分查找) 5.Python匿名函数 6.Python内置方法 ...

  7. Linux终端杀手、程序员利器-Tmux

        Send article as PDF      SA.Coder.经常远程.还在开一堆终端?试试 Tmux 吧,一个窗口就搞定. 目录 0.0.0.1 Tmux ? Tmux 是一个终端复用 ...

  8. 用canvas制作酷炫射击游戏--part3

    今天介绍下 游戏中的sprite模块,也就是构建玩家及怪物的模块.有了这个模块,就可以在咱们的游戏里加入人物了. 想必用过css的朋友都知道sprite,一种将需要加载的图片拼接在一张图里以减少请求的 ...

  9. ADO.NET Entity Framework

    ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案, 早期被称为 ObjectSpace,现已经包含在 V ...

  10. easyui的datagrid打印(转)

    在使用easyui插件的时候,使用最多的应该是datagrid插件.有时候根据客户需求,可能需要将datagrid内容进行打印,这时候如果直接调用window.print,可能由于easyui的dat ...