一 概念
缓存的分类:
客户端缓存 (Client Caching)
代理缓存 (Proxy Caching)
反向代理缓存 (Reverse Proxy Caching)
服务器缓存(Web Server Caching)
使用缓存的好处:
像css,js,image 等静态资源文件,变化不大的asp.net页面,在第二次访问时不需要再次请求服务端,而使用本地缓存的内容;
减少客户端对服务器资源请求的压力,加快客户端的响应速度;
OutputCache语法;
<% OutputCache Duration=”#ofseconds”
Location=”Any|Client|Downstream|Server|none|ServerAndClient”
Shared=”True|False”
VaryByControl=”controlname”
VaryByCustome=”brower|Customstring”
VaryByHeard=”headers”
VaryByParam=”parametername”
VaryByContentEncoding=”encodings”
CacheProfile=”cache profile name”
NoStroe=”true|false”
SqlDepedency=”database/table name pair |CommandNotification”
ProviderName=”Provider Name”
%>
(这些属性可以写在页面中,也可以写在配置文件件中的)
接下来对每一参数进行讲解
Duration:设置页或用户控件进行缓存的时间(以秒为单位),也就是过期时间;
Location:OutputCacheLocation 的枚举之一。默认值为any。
any:输出缓存可以位于 客户端浏览器,代理服务器,web服务器 的任何一个
Client:缓存位于客户端浏览器上。
Downstream:输出缓存可以存储在任何http1.1 可缓存设备中,源服务器除外!这包括代理服务器和发出请求的客户端。
None:禁用输出缓存。
server:缓存位于web服务器上。
ServerAndClient:客户端和web服务器都可以缓存,代理服务器不可以
CacheProfile:与该页关联的缓存设置的名称。这是可选特性,默认值为空字符串 (“”)
NoStore:一个布尔值,它决定了是否住址铭感的二级信息。
ProviderName:一个字符串值,标识要使用的自定义输出缓存的提供程序;
Shared:一个布尔值,确定用户控件是否可以由多个页共享,默认值为false
SqlDependency:标识一组数据库、表名称对字符串值,页或者控件的输出缓存的依赖的这些名称对,请注意,SqlCacheDependency 类监视输出缓存所依赖的数据库中的表,因此当更新表中的项时,使用基于表的轮询时将从缓存中移除这些项。如果以值 CommandNotification: 使用通知(在 Microsoft SQL Server 2005 中),则最终会使用 SqlDependency 类向 SQL Server 2005 服务器注册查询通知。
VaryByCustom:任何表示自定义输出缓存要求的额文本,如果特性复制为browser,缓存将随浏览名称和主板信息的不同
而异,如果输入的是自定义字符串,则必须在应用程序, Global.asax 文件中重写 GetVaryByCustomString 方法。
VaryByHeader:分号隔开的http表头列表,
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 节。
—-接下来,我们一一的解释和使用这些参数;来达到不同的效果。
—-配置文件
<system.web>
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<!–name :缓存配置名称;
duration 缓存配置的时间(以秒为单位)
enable 指定缓存有效–>
<add name=”testCache” duration=”120″ enabled=”true” varyByParam=”*”/>
</outputCacheProfiles>
</outputCacheSettings>
</caching>
</system.web>
页面中使用:
<%@ OutputCache CacheProfile="testCache" %>
VaryByParam属性
分号分开的字符串列表,用于输出缓存发生变化;
具体的说就是根据?后面的参数 来决定是否输出缓存
还是发送新的页
varyByParam="none" 当 VaryByParam 设置为 none 时,将不考虑任何参数;无论提供什么附加参数,都将向所有用户发送相同的页(也就是缓存)
varyByParam="*" 就是任何形式的参数都改变,都发送新的页,而不使用缓存。
也可以指定某些特定的参数发生变化时,而发送新的页;
如:www.shopping/index?id=1&other=2
设置为:VaryByParam="id" id 发生变化,就发送新的页
设置为:VaryByParam="id;other" id,other 发生变化,就发送新的页
location 属性
outputCacheLocation 枚举值之一。
Any:输出缓存可位于产生请求的浏览器客户端、参与请求的代理服务器(或任何其他服务器)或处理请求的服务器上。
先插播一点 http 的知识,(详细的看这里:http://www.shangxueba.com/jingyan/103345.html)
缓存中存储的不仅仅是网页,还有服务器发过来的 该文件的最后 服务器修改时间。
If-Modified-Since 是标准的http请求头标签,发送http请求时候,
把浏览器端缓存页面的最后修改时间 一起发到服务端去,服务器会把这个时间与服务器上的实际文件
的最后修改时间,进行比较,如果时间一致,那么返回304 ,客户端接到之后,就直接把本地缓存文 件显示到浏览器中。
如果时间不一致,就返回HTTP状态码200和新的文件内容,客户端接到之后,会丢弃旧文件,把新文件 缓存起来,并显示到浏览器中。
—这个也是一个大的话题,要满满的整滴呀;
参考文献:http://www.cnblogs.com/woxpp/p/3973182.html
http://www.cnblogs.com/rush/archive/2012/06/30/2571438.html
转载于:https://www.cnblogs.com/mc67/p/4812332.html
今天的文章output cycle_sessionstorage用法[通俗易懂]分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/58134.html