理解ASP.NET與客戶端緩存之HTTP協議
2006/12/30 22:38:52
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 - 不允許轉換存儲系統。

返回列表
返回首頁 主站蜘蛛池模板: 国产精品蜜芽在线观看| 日本免费电影在线观看| 免费v片在线观看视频网站| 野花社区在线播放| 国产精品久久久久一区二区 | 国产午夜福利内射青草| 香蕉免费看一区二区三区| 天堂中文www资源在线| 三级黄色在线看| 日本免费网站观看| 亚洲av无码一区二区三区鸳鸯影院| 永久不封国产毛片AV网煮站| 免费看大美女大黄大色| 老司机午夜电影| 国产乱妇乱子在线播放视频| 国产亚洲sss在线播放| 国产精品无码aⅴ嫩草| 99久久精品日本一区二区免费| 思思久久99热只有频精品66| 丰满岳乱妇在线观看中字无码| 日韩夜夜高潮夜夜爽无码| 亚洲免费在线观看| 欧美黑人xxxx| 亚洲精品欧美精品日韩精品| 福利在线一区二区| 午夜人妻久久久久久久久| 色五五月五月开| 国产伦精品一区二区三区精品| 91秦先生在线| 国产激情小视频| 手机看片1024旧版| 国产精品视频免费视频| 99精品国产高清一区二区| 天天躁狠狠躁狠狠躁夜夜躁| 一二三四日本高清社区5| 性放荡日记高h| 中国大陆高清aⅴ毛片| 无码一区二区三区在线| 久久久无码一区二区三区| 日本高清在线免费| 久久精品福利视频|