国产探花免费观看_亚洲丰满少妇自慰呻吟_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 - 不允許轉換存儲系統。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 镇原县| 雷山县| 灵武市| 辽宁省| 衡阳县| 临夏市| 永宁县| 瓦房店市| 新疆| 石河子市| 措美县| 柳河县| 南城县| 雷山县| 全南县| 天门市| 大邑县| 宁德市| 穆棱市| 焉耆| 五指山市| 临沭县| 阿合奇县| 修武县| 永宁县| 阳原县| 瓦房店市| 竹山县| 从江县| 轮台县| 神池县| 万年县| 固始县| 泰和县| 池州市| 正宁县| 芒康县| 云霄县| 梓潼县| 麦盖提县| 祁门县|