国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

OutputCache屬性詳解(二)一 Location

2019-11-17 01:46:08
字體:
供稿:網(wǎng)友

OutputCache屬性詳解(二)一 Location

目錄

  • OutputCache概念學(xué)習(xí)

  • OutputCache屬性詳解(一)

  • OutputCache屬性詳解(二)

  • OutputCache屬性詳解(三)

  • OutputCache屬性詳解(四)— SqlDependency

Web應(yīng)用程序中的使用緩存位置:

  • 客戶端緩存(Client Caching)
  • 代理緩存(PRoxy Caching)
  • 反向代理緩存(Reverse Proxy Caching)
  • 服務(wù)器緩存(Web Server Caching)

Location:OutputCacheLocation 枚舉值之一。

使用該枚舉指定的值。這些值確定頁輸出的緩存位置。默認(rèn)值為 Any。

  • Any:輸出緩存可位于產(chǎn)生請(qǐng)求的瀏覽器客戶端、參與請(qǐng)求的代理服務(wù)器(或任何其他服務(wù)器)或處理請(qǐng)求的服務(wù)器上。此值對(duì)應(yīng)于 HttpCacheability.Public 枚舉值。         
  • Client:輸出緩存位于產(chǎn)生請(qǐng)求的瀏覽器客戶端上。此值對(duì)應(yīng)于 HttpCacheability.Private 枚舉值。         
  • Downstream:輸出緩存可存儲(chǔ)在任何 HTTP 1.1 可緩存設(shè)備中,源服務(wù)器除外。這包括代理服務(wù)器和發(fā)出請(qǐng)求的客戶端。         
  • None:對(duì)于請(qǐng)求的頁,禁用輸出緩存。此值對(duì)應(yīng)于 HttpCacheability.NoCache 枚舉值。         
  • Server:輸出緩存位于處理請(qǐng)求的 Web 服務(wù)器上。此值對(duì)應(yīng)于 HttpCacheability.Server 枚舉值。         
  • ServerAndClient:輸出緩存只能存儲(chǔ)在源服務(wù)器或發(fā)出請(qǐng)求的客戶端中。代理服務(wù)器不能緩存響應(yīng)。此值對(duì)應(yīng)于 HttpCacheability.Private 和 HttpCacheability.Server 枚舉值的組合。

測試前準(zhǔn)備,新建WebSite站點(diǎn),配置文件增加:

  <system.web>    <caching>      <outputCacheSettings>        <outputCacheProfiles>           <!--name 緩存配置名稱           duration 緩存的時(shí)間(以秒計(jì))           enabled  指定緩存有效           -->          <add name="outputCache60" duration="60" enabled="true" varyByParam="*" location="Any" />        </outputCacheProfiles>      </outputCacheSettings>    </caching>    <compilation debug="true"/>  </system.web>

增加兩個(gè)頁面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"><%@ OutputCache CacheProfile="outputCache60"  %><html xmlns="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"><%@ OutputCache CacheProfile="outputCache60"  %><html xmlns="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:輸出緩存可位于產(chǎn)生請(qǐng)求的瀏覽器客戶端、參與請(qǐng)求的代理服務(wù)器(或任何其他服務(wù)器)或處理請(qǐng)求的服務(wù)器上。

<add name="outputCache60" duration="60" enabled="true" varyByParam="*" location="Any" />

在客戶端,第一次請(qǐng)求為HTTP狀態(tài)碼為200,第二次請(qǐng)求的HTTP狀態(tài)碼為304

第一次HTTP的請(qǐng)求和響應(yīng)信息如下(200):

第二次HTTP的請(qǐng)求和響應(yīng)信息如下(304):

我們可以看到,第二次請(qǐng)求時(shí),請(qǐng)求標(biāo)頭里多了個(gè) If-Modified-Since 和Last-Modified標(biāo)簽:

  • 客戶端發(fā)HTTP請(qǐng)求時(shí),使用If-Modified-Since標(biāo)簽,把上次服務(wù)器告訴它的文件最后修改時(shí)間 返回到服務(wù)器端了。
  • 因?yàn)槲募桓膭?dòng)過,兩邊時(shí)間不一致,所以服務(wù)器返回的HTTP狀態(tài)碼是200,并發(fā)送新頁面的全 部內(nèi)容。
  • 服務(wù)器返回的HTTP頭標(biāo)簽中有Last-Modified,告訴客戶端頁面的新的最后修改時(shí)間。

Cache-control 大家也可以看下

并且第二次響應(yīng)中并沒有來自服務(wù)端響應(yīng)數(shù)據(jù),Any在多個(gè)客戶端統(tǒng)一請(qǐng)求該頁面的情況下,反饋給客戶端的數(shù)據(jù)都是一致的,也就是從服務(wù)端獲取的。(PS:這點(diǎn)與Client不同),如下:

Client:輸出緩存位于產(chǎn)生請(qǐng)求的瀏覽器客戶端上。

<add name="outputCache60" duration="60" enabled="true" varyByParam="*" location="Client" />

第一次數(shù)據(jù)請(qǐng)求與響應(yīng)情況如下:

客戶端緩存,如果用戶在瀏覽器中點(diǎn)擊“后退”按鈕或在地址欄中重新輸入U(xiǎn)RL,那么在這種情況下,瀏覽器將從緩存獲取頁面;然而,如果用戶點(diǎn)擊“刷新”按鈕,那么瀏覽器中緩存將失效,瀏覽器發(fā)送頁面請(qǐng)求。但是瀏覽器做回退操作時(shí),本身就可以讀取自身的緩存數(shù)據(jù),這樣抓取的數(shù)據(jù)沒有意義,所以我們第二次抓取的順序需要是:

1.第一次進(jìn)入Default.aspx頁面(抓取一次Default.aspx)

2.點(diǎn)擊 Default2.aspx 鏈接

3.進(jìn)入Deafult2.aspx頁面后,點(diǎn)擊頁面中的Default.aspx鏈接跳轉(zhuǎn)回來(抓取一次Default.aspx)

這時(shí)候我們抓取的才是真正的304而不是瀏覽器自帶的304。

第二次請(qǐng)求抓取的請(qǐng)求與相應(yīng)數(shù)據(jù),如下圖:

可以看出設(shè)置成Client時(shí),第二次請(qǐng)求時(shí),在請(qǐng)求頭中,客戶端與服務(wù)端的鏈接已經(jīng)斷開,沒有任何請(qǐng)求服務(wù)端的操作,且響應(yīng)的狀態(tài)碼為304,讀取本地緩存。

多個(gè)客戶端同時(shí)請(qǐng)求時(shí),其反饋的數(shù)據(jù)不一致,如下:

Downstream:輸出緩存可存儲(chǔ)在任何 HTTP 1.1 可緩存設(shè)備中,源服務(wù)器除外。這包括代理服務(wù)器和發(fā)出請(qǐng)求的客戶端。  

<add name="outputCache60" duration="60" enabled="true" varyByParam="*" location="Downstream" />

個(gè)人感覺DownstreamClinet類似,只不過有兩個(gè)小區(qū)別:

  • 數(shù)據(jù)存儲(chǔ)空間和數(shù)據(jù)存儲(chǔ)模式不一樣,后面會(huì)總結(jié)
  • Cache-Control,Client為private、Downstream 為 public

我們按照Clinet的方式繼續(xù)抓取兩次的請(qǐng)求與響應(yīng)信息如下:

第一次請(qǐng)求與響應(yīng):

第二次請(qǐng)求與響應(yīng),與clinet完全一致,且在多個(gè)客戶端下數(shù)據(jù)也不同。

None:對(duì)于請(qǐng)求的頁,禁用輸出緩存。此值對(duì)應(yīng)于 HttpCacheability.NoCache 枚舉值。

<add name="outputCache60" duration="60" enabled="true" varyByParam="*" location="None" />

我們繼續(xù)按抓取Clinet的方式抓取兩次請(qǐng)求和響應(yīng)信息,如下:

第一次請(qǐng)求與響應(yīng):

第二次請(qǐng)求與響應(yīng):

可以看到兩次的請(qǐng)求與響應(yīng)一致,且返回狀態(tài)碼都是200,在Cache-Control信息中為no-cache,響應(yīng)信息中也不夾帶任何緩存相關(guān)的標(biāo)簽。

private、must-revalidate、max-age、no-cache 對(duì)于瀏覽器操作的訪問大家可以看下

關(guān)于Pragma:no-cache,跟Cache-Control: no-cache相同。Pragma: no-cache兼容http 1.0 ,Cache-Control: no-cache是http 1.1提供的。因此,Pragma: no-cache可以應(yīng)用到http 1.0 和http 1.1,而Cache-Control: no-cache只能應(yīng)用于http 1.1.

在多個(gè)客戶端請(qǐng)求時(shí),頁面所展示的信息不會(huì)一致。

Server:輸出緩存位于處理請(qǐng)求的 Web 服務(wù)器上。此值對(duì)應(yīng)于 HttpCacheability.Server 枚舉值。

<add name="outputCache60" duration="60" enabled="true" varyByParam="*" location="Server" />

繼續(xù)按抓取Clinet的方式抓取兩次請(qǐng)求和響應(yīng)信息,如下:

可以看到HTTP請(qǐng)求與響應(yīng)的數(shù)據(jù)與設(shè)置為None 類似,但是在多個(gè)客戶端的情況下,Server的數(shù)據(jù)能保持一致,但None則不能。

ServerAndClient:輸出緩存只能存儲(chǔ)在源服務(wù)器或發(fā)出請(qǐng)求的客戶端中。代理服務(wù)器不能緩存響應(yīng)。此值對(duì)應(yīng)于 HttpCacheability.Private 和 HttpCacheability.Server 枚舉值的組合。

繼續(xù)按抓取Clinet的方式抓取兩次請(qǐng)求和響應(yīng)信息,如下:

看請(qǐng)求與設(shè)置為Client差不多,但是Clinet在多客戶端下數(shù)據(jù)為不一致的,但ServerAndClient在多客戶端下則能保持一致

總結(jié),如有問題或理解錯(cuò)誤 歡迎指正。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 尉犁县| 诸城市| 芦山县| 牙克石市| 宣武区| 新津县| 永靖县| 拉萨市| 吴旗县| 罗江县| 永春县| 清水河县| 会同县| 阜阳市| 永胜县| 湖口县| 曲麻莱县| 吉水县| 黄龙县| 泸定县| 达尔| 芮城县| 开封市| 庆云县| 鹤壁市| 治县。| 永定县| 七台河市| 临猗县| 都匀市| 大渡口区| 襄城县| 铁岭市| 自贡市| 康乐县| 高阳县| 兴安盟| 宁安市| 长沙县| 金山区| 尼木县|