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

首頁 > 編程 > .NET > 正文

理解ASP.NET與客戶端緩存之HTTP協議

2024-07-10 13:09:05
字體:
來源:轉載
供稿:網友
  前言

  這個系列的文章要討論的是如何通過asp.net服務器端技術來優化客戶端緩存策略,而且讓這種策略變得可配置和可擴展。我們要了解的知識從http協議中相關屬性對客戶端緩存的影響,到asp.net如何控制這些屬性來實現我們的緩存策略。

  http基礎知識

  由于討論涉及到客戶端緩存,所以還是先要簡單介紹一下http協議是如何控制客戶端緩存的,這里涉及到http頭的last-modified、etag等屬性。

  last-modified

  在瀏覽器第一次請求某一個url時,服務器端的返回狀態會是200,內容是你請求的資源,同時有一個last-modified的屬性標記此文件在服務期端最后被修改的時間,格式類似這樣:

last-modified: fri, 12 may 2006 18:53:33 gmt

  客戶端第二次請求此url時,會在頭部加入一個屬性,詢問該時間之后文件是否有被修改過:

if-modified-since: fri, 12 may 2006 18:53:33 gmt

  如果服務器端的文件沒有被修改過,則返回狀態是304,內容為空,這樣就節省了傳輸數據量。如果服務器端的文件被修改過,則返回和第一次請求時類似。

  etag

  和last-modified類似,由于rfc2616(也就是http/1.1)中沒有說明etag該是什么格式的,只要確保用雙引號括起來就行了,所以你可以用文件的hash,甚至是直接用last-modified,以下是服務器端返回的格式:

etag: "50b1c1d4f775c61:df3"

  客戶端的查詢更新格式是這樣的:

if-none-match: w/"50b1c1d4f775c61:df3"

  如果etag沒改變,則返回狀態304然后不返回,這也和last-modified一樣。

expires

  這個屬性就如我們在asp中使用httpresponse.expiresabsolute一樣直接,聲明某某時刻過期之后瀏覽器就應該重新請求該url,使用格式為:

expires: sun, 10 feb 2002 16:00:00 gmt

  注意httpresponse.expiresabsolute在asp.net中是不建議使用的,現在我們應該使用的是httpresponse.cache.setexpires。

  pragma

  通常我們用到的值就是no-cache,這和在cache-control中使用no-cache值是一樣的,cache-control在下面講。pragma的使用格式如下:

  pragma: no-cache
  cache-control

  這是一個集合型屬性,它里面能夠包含很多子屬性,并且允許用戶擴展新的子屬性。常見的子屬性包括:

  max-age - 以秒為單位的超時,覆蓋expires屬性。
  public - 允許保存在共享緩存中。
  private - 只允許保存在私有緩存中。
  no-cache - 不允許緩存。
  no-store - 不允許緩存在持久介質中。
  no-transform - 不允許轉換存儲系統。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沛县| 湖南省| 顺平县| 霍城县| 宜章县| 兴山县| 龙胜| 绥德县| 南京市| 仲巴县| 灵丘县| 唐山市| 安化县| 页游| 崇明县| 汉源县| 临洮县| 兴山县| 襄樊市| 图们市| 沂水县| 永嘉县| 石柱| 新乡县| 吴忠市| 永登县| 神农架林区| 大新县| 南涧| 马山县| 宽甸| 东城区| 康马县| 赤水市| 大港区| 岑巩县| 青岛市| 航空| 朝阳市| 平顶山市| 桐乡市|