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

首頁 > 學院 > 開發設計 > 正文

OutputCache屬性詳解(一)一Duration、VaryByParam

2019-11-17 01:45:52
字體:
來源:轉載
供稿:網友

OutputCache屬性詳解(一)一Duration、VaryByParam

目錄

  • OutputCache概念學習

  • OutputCache屬性詳解(一)

  • OutputCache屬性詳解(二)

  • OutputCache屬性詳解(三)

  • OutputCache屬性詳解(四)— SqlDependency

Duration與CachePRofile屬性

Duration:頁或用戶控件進行緩存的時間(以秒計)。在頁或用戶控件上設置該特性為來自對象的 HTTP 響應建立了一個過期策略,并將自動緩存頁或用戶控件輸出。

CacheProfile:與該頁關聯的緩存設置的名稱。這是可選特性,默認值為空字符串 ("")。

測試OutputCache準備

在Visual Studio中,新建website項目,并修改頁面信息如下:

<%@ 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"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">    <title></title></head><body>    <form id="form1" runat="server">    <div>        <%=DateTime.Now %>    </div>    </form></body></html>

打開 Fiddler 工具,在瀏覽器中打開頁面,我們可以看到Fiddler 跟蹤到的響應信息如下:

并且每次刷新Fiddler所返回的狀態碼都是200,而且頁面輸出時間在不斷變化,如下:

我們修改項目,在website下的Web.config文件中添加如下配置:

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

并修改頁面信息為,增加 <%@ OutputCache CacheProfile="outputCache60" %>:

<%@ 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>    </form></body></html>

同樣利用 Fiddler 跟蹤,得到的信息如下:

我們可以看到 Response Heades 所返回的Cache與不加緩存時返回的完全不一樣(多了 Date 和 Expires 節點),加緩存后的時間范圍與配置文件中時間一致,相差60秒(duration="60")。

加緩存后,第一次數據請求的狀態為200,而之后請求返回的狀態都是304,而且頁面所輸出的時間一直未變。(超過60秒后第一次刷新,時間會變化,且狀態變為200)

HTTP 304: Not Modified客戶端有緩沖的文檔并發出了一個條件性的請求(一般是提供If-Modified-Since頭表示客戶只想比指定日期更新的文檔)。服務器告訴客戶,原來緩沖的文檔還可以繼續使用。

VaryByParam屬性

分號分隔的字符串列表,用于使輸出緩存發生變化。默認情況下,這些字符串對應于使用 GET 方法特性發送的查詢字符串值,或者使用 POST 方法發送的參數。將該特性設置為多個參數時,對于每個指定參數組合,輸出緩存都包含一個不同版本的請求文檔。

可能的值包括 none、星號 (*) 以及任何有效的查詢字符串或 POST 參數名稱。

varyByParam="none" 當 VaryByParam 設置為 none 時,將不考慮任何參數;無論提供什么附加參數,都將向所有用戶發送相同的頁:

下面是Fiddler跟蹤的信息:

可以看到,參數改變時數據請求都是200(第二次為304),但是頁面上的數據則全是相同的副本,如下:

VaryByParam =“*”對于每個唯一的請求參數組合,將緩存一個唯一頁

如圖中所示,不管所傳的參數為id,code還是para 只要值有所變化時,就會請求服務器,不會讀取緩存數據(需要注意的是資源文件如img,js,CSS等還是會走緩存的)

而且其頁面上的數值也是變化的,如下:

但是,將 VaryByParam 設置為 * 會緩存頁的許多不同版本,所以如果您知道緩存變化所依據的參數,建議您在 VaryByParam 特性中顯式指定這些參數。

如varyByParam="id;code" 或者 varyByParam="id" 表示當 id;code 或者 id 參數變化時,發生給客戶端不同頁。

我這邊配置文件修改為

 <add name="outputCache60" duration="60" enabled="true" varyByParam="id;code" />

Fiddler跟蹤的信息如下:

參數改變都會當成一個新的數據請求,但是返回給客戶端的數據則不同,如下:

id和code變化時,輸出內容會隨參數變化,但para無論參數怎么變化,輸出的結果都是一樣的。

該章只是簡單介紹了Duration,CacheProfile,VaryByParam屬性 ,如有錯誤或者問題請各路大神指正!

作者:釋迦苦僧 出處:http://www.survivalescaperooms.com/woxpp/p/3975209.html本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宣恩县| 平昌县| 清原| 乐亭县| 孝义市| 泰顺县| 宝坻区| 玉树县| 灵武市| 宁河县| 吴桥县| 湘阴县| 昭通市| 教育| 万安县| 松滋市| 烟台市| 凤台县| 孟州市| 濮阳县| 富宁县| 新津县| 西峡县| 朔州市| 绥江县| 专栏| 阿坝县| 富锦市| 明星| 十堰市| 福贡县| 阿合奇县| 新民市| 河池市| 定州市| 陆川县| 东辽县| 武定县| 石家庄市| 福鼎市| 元阳县|