• OutputCache概念学习


    目录

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

    缓存的分类: 

    • 客户端缓存(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 响应建立了一个过期策略,并将自动缓存页或用户控件输出。
    • LocationOutputCacheLocation 枚举值之一。默认值为 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 的概念就写到这,后面会写到每个属性的使用以及差异化,希望大家多多支持。

  • 相关阅读:
    实现点击预览图片更改页面背景图片的效果
    JavaScript中赋值运算符的使用
    Visual Studio常用快捷键
    循 环 嵌 套
    控制摄像头拍照
    运用<body>属性,渲染页面效果
    子查询的易错点
    随机数
    PDO获取数据乱码的解决方法
    JavaScript中比较运算符的使用
  • 原文地址:https://www.cnblogs.com/woxpp/p/3973182.html
Copyright © 2020-2023  润新知