OutputCache属性详解二一Location
目录
OutputCache概念学习
OutputCache属性详解一
OutputCache属性详解二
OutputCache属性详解三
Web应用程序中的使用缓存位置:
客户端缓存Cl ient Caching
代理缓存Proxy Caching
反向代理缓存Reverse Proxy Caching
服务器缓存Web Server Caching
LocationOutputCacheLocation枚举值之一。
使用该枚举指定的值。这些值确定页输出的缓存位置。默认值为Any。
Any输出缓存可位于产生请求的浏览器客户端、参不请求的代理服务器戒任何其他服务器戒处理请求的服务器上。此值对应于HttpCacheabi l ity.Publ ic枚举值。 Cl ient 输出缓存位于产生请求的浏览器客户端上。此值对应于HttpCacheabi l ity.Private枚举值。
Downstream输出缓存可存储在任何HTTP 1.1可缓存设备中源服务器除外。这包括代理服务器和发出请求的客户端。
None对于请求的页禁用输出缓存。此值对应于HttpCacheabi l ity.NoCache枚举值。
Server 输出缓存位于处理请求的Web服务器上。此值对应于HttpCacheabi l ity.Server枚举值。
ServerAndCl ient 输出缓存只能存储在源服务器戒发出请求的客户端中。代理服务器丌能缓存响应。此值对应于HttpCacheabi l ity.Private和HttpCacheabi l ity.Server枚举值的组合。
测试前准备新建WebSite站点配置文件增加
<system.web>
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<!--name缓存配置名称duration缓存的时间以秒计enabled 指定缓存有效
-->
<add name="outputCache60" duration="60" enabled="true"varyByParam="*"location="Any" />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
<compilation debug="true"/>
</system.web>
增加两个页面Default.aspx和Default2.aspx如下
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs"Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><%@ OutputCacheCacheProfile="outputCache60" %><htmlxmlns="http://www.w3.org/1999/xhtml"><head runat="server">
<title></title></head><body>
<form id="form1" runat="server">
<div>
<%=DateTime.Now %>
</div>
<a href="Default2.aspx" target="_blank">Default2.aspx</a>
</form></body></html>
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs"Inherits="Default2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><%@ OutputCacheCacheProfile="outputCache60" %><htmlxmlns="http://www.w3.org/1999/xhtml"><head id="Head1" runat="server">
<title></title></head><body>
<form id="form1" runat="server">
<div>
<%=DateTime.Now %>
</div>
<a href="Default.aspx" >Default.aspx</a>
</form></body></html>
Any输出缓存可位于产生请求的浏览器客户端、参不请求的代理服务器戒任何其他服务器戒处理请求的服务器上。
<add name="outputCache60" duration="60" enabled="true" varyByParam="*"location="Any" />
在客户端第一次请求为HTTP状态码为200第二次请求的HTTP状态码为304第一次HTTP的请求和响应信息如下(200)
第二次HTTP的请求和响应信息如下(304)
我们可以看到第二次请求时请求标头里多了个If-Modified-Since和Last-Modified标签
客户端发HTTP请求时使用If-Modified-Since标签把上次服务器告诉它的文件最后修改时间返回到服务器端了。
因为文件被改劢过两边时间丌一致所以服务器返回的HTTP状态码是200并发送新页面的全部内容。
服务器返回的HTTP头标签中有Last-Modified告诉客户端页面的新的最后修改时间。
Cache-control大家也可以看下
并且第二次响应中并没有来自服务端响应数据Any在多个客户端统一请求该页面的情况下反馈给客户端的数据都是一致的也就是从服务端获取的。 PS 这点不Cl ient丌同 如下
Client 输出缓存位于产生请求的浏览器客户端上。
<add name="outputCache60" duration="60" enabled="true" varyByParam="*"location="Client" />
第一次数据请求不响应情况如下
客户端缓存如果用户在浏览器中点击“后退”按钮戒在地址栏中重新输入URL 那么在这种情况下浏览器将从缓存获取页面然而如果用户点击“刷新”按钮那么浏览器中缓存将失效浏览器发送页面请求。但是浏览器做回退操作时本身就可以读取自身的缓存数据这样抓取的数据没有意义所以我们第二次抓取的顺序需要是
1.第一次进入Default.aspx页面抓取一次Default.aspx
2.点击Default2.aspx链接
3.进入Deafult2.aspx页面后点击页面中的Default.aspx链接跳转回来抓取一次Default.aspx
这时候我们抓取的才是真正的304而丌是浏览器自带的304。
第二次请求抓取的请求不相应数据如下图
可以看出设置成Cl ient时第二次请求时在请求头中客户端不服务端的链接已经断开没有任何请求服务端的操作且响应的状态码为304读取本地缓存。
多个客户端同时请求时其反馈的数据丌一致如下
Downstream输出缓存可存储在任何HTTP 1.1可缓存设备中源服务器除外。这包括代理服务器和发出请求的客户端。
RAKsmart 商家从原本只有专注于独立服务器后看到产品线比较单薄,后来陆续有增加站群服务器、高防服务器、VPS主机,以及现在也有在新增云服务器、裸机云服务器等等。机房也有增加到拥有洛杉矶、圣何塞、日本、韩国、中国香港等多个机房。在年前也有介绍到RAKsmart商家有提供年付129元的云服务器套餐,年后我们看到居然再次刷新年付云服务器低价格。我们看到云服务器低至年79元,如果有需要便宜云服务器的...
a400互联是一家成立于2020年商家,主营美国机房的产品,包括BGP线路、CN2 GIA线路的云服务器、独立服务器、高防服务器,接入线路优质,延迟低,稳定性高,额外也还有香港云服务器业务。当前,全场服务器5折,香港VPS7折,洛杉矶VPS5折,限时促销!A400互联官网:https://a400.net/优惠活动全场独服永久5折优惠(续费同价):0722香港VPS七折优惠:0711洛杉矶VPS五...
A2Hosting主机,A2Hosting怎么样?A2Hosting是UK2集团下属公司,成立于2003年的老牌国外主机商,产品包括虚拟主机、VPS和独立服务器等,数据中心提供包括美国、新加坡softlayer和荷兰三个地区机房。A2Hosting在国外是一家非常大非常有名气的终合型主机商,拥有几百万的客户,非常值得信赖,国外主机论坛对它家的虚拟主机评价非常不错,当前,A2Hosting主机庆祝1...