成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

有關客戶端瀏覽器緩存的HTTP頭介紹

開發 前端
做網站開發離不開緩存,緩存分好多種:服務器緩存,第三方緩存,瀏覽器緩存等。其中瀏覽器緩存是代價最小的,因為瀏覽器緩存依賴的是客戶端,而幾乎不耗費服務器端的資源。

讓瀏覽器做緩存需要給瀏覽器發送指定的Http頭,告訴瀏覽器緩存多長時間,或者堅決不要緩存。作為.net的程序員,其實我們一直都在用這種方法,在OutputCache指令中指定緩存的Location為Client時,其實就是給瀏覽器發送了一個Http頭,告訴瀏覽器這個Url要緩存多長時間,最后修改的時間。

微軟在OutputCacheModule中對這些緩存用到的Http頭給我們進行了很好的封裝,但是了解這些Http頭可以更靈活的使用它們。

和客戶端緩存相關的Http頭有以下幾個,分別是:

1. Expires:+過期時間

表示在指定時間后瀏覽器緩存失效,需要注意的是這兒的過期時間必須是HTTP格式的日期時間,其他的都會被解析成當前時間“之前”,緩存會馬上過期,HTTP的日期時間必須是格林威治時間(GMT),而不是本地時間。舉例:

Expires: Fri, 30 Oct 2009 14:19:41

使用Expires過期必須要求服務器的時間是正確的,否則發送的http頭就會出問題,在windows服務下可以設置時間服務器來同步時間

2. Cache-control:

Cache-control直譯成中文就是緩存控制,它的作用就是緩存控制,這個http頭的值有幾種。

1) max-age=[秒] — 執行緩存被認為是最新的最長時間。類似于過期時間,這個參數是基于請求時間的相對時間間隔,而不是絕對過期時間,[秒]是一個數字,單位是秒:從請求時間開始到過期時間之間的秒數。

2) s-maxage=[秒] — 類似于max-age屬性,除了他應用于共享(如:代理服務器)緩存

3) public — 標記認證內容也可以被緩存,一般來說: 經過HTTP認證才能訪問的內容,輸出是自動不可以緩存的;

4) no-cache — 強制每次請求直接發送給源服務器,而不經過本地緩存版本的校驗。這對于需要確認認證應用很有用(可以和public結合使用),或者嚴格要求使用最新數據的應用(不惜犧牲使用緩存的所有好處);

5) no-store — 強制緩存在任何情況下都不要保留任何副本

6) must-revalidate — 告訴緩存必須遵循所有你給予副本的新鮮度的,HTTP允許緩存在某些特定情況下返回過期數據,指定了這個屬性,你高速緩存,你希望嚴格的遵循你的規則。

7) proxy-revalidate — 和 must-revalidate類似,除了他只對緩存代理服務器起作用

舉例:
Cache-Control: max-age=3600, must-revalidate

很顯然Cache-control可以提供比Expires更靈活的緩存控制,而且它不需要依賴于服務器時間。

在Asp.Net中微軟把對Cache-control屬性的設置封裝到了HttpCachePolicy類中,我們可以通過Response.Cache來調用以下方法來做到對Cache-Control Http頭值的控制:

Response.CacheControl;
Response.Cache.SetNoStore
Response.Cache.SetMaxAge
Response.Cache.SetProxyMaxAge
Response.Cache.SetRevalidation

3. Last-Modified/If-Modified-Since

這兩個Http頭是一對,前者表示某個地址的最近更新時間,是服務器端響應給客戶端的;而后者是客戶端瀏覽器發送給服務器的,告訴web服務器客戶端有一個最后更改時間為什么時間的緩存,服務器端接收到If-Modified-Since頭后則判斷客戶端緩存的這份url地址的緩存是否是最新的,如果是最新的則服務器端直接給客戶端返回HttpStatus 304,意思是說這個內容在你上次請求之后沒有變化過,你直接用緩存就可以了;如果服務器發現url的最后更新時間比If-Modified-Since的值要新,則會輸出新的內容。

同樣微軟也為我們做了服務器端設置的封裝,我們可以這樣調用

Response.Cache.SetLastModified(DateTime)
Response.Cache.SetLastModifiedFromFileDependencies()

如果有更復雜的需求就需要自己處理了。

4. ETag/If-None-Match

ETag和Last-Modified類似,不過他發送的是一個字符串來標示url的版本,如果url變了則此標示也跟著變化,在瀏覽器發送If-None-Match時告訴瀏覽器內容已經變了,或者沒變可以使用緩存。

Iis會自動給靜態文件加上Etag,在文件發生改變時重新生成一個Etag,這樣對于一個網站中的n多個靜態文件如:樣式表,小圖片等,客戶端只下載一次就夠了,可以減輕負載。

在Asp.Net中我們可以用以下兩個方法來設置
Response.Cache.SetETag(string)
Response.Cache.SetETagFromFileDependencies()

盡管微軟為我們做了很多封裝,但是我們還是需要詳細的了解之后才可以用好這幾個HTTP頭。

【編輯推薦】

  1. 詳解AJAX核心中的XMLHttpRequest對象
  2. Servlet和JavaServer Page使用介紹
  3. Http Servlet Request對象介紹
  4. Servlet API的強筋實力
  5. ServletContext的作用是什么
責任編輯:彭凡 來源: cnblogs
相關推薦

2016-01-05 12:54:52

瀏覽器瀏覽器端緩存

2017-04-06 15:40:31

客戶端數據存儲技術

2017-05-15 13:40:20

瀏覽器http緩存機制

2021-08-02 13:05:49

瀏覽器HTTP前端

2019-08-16 10:54:03

本地存儲javascripthttp緩存

2016-12-14 13:41:49

HTML 5瀏覽器VDI

2009-07-02 16:44:59

JSP獲取

2012-03-20 11:07:08

2010-07-19 16:30:19

Telnet客戶端

2012-03-20 11:41:18

海豚瀏覽器

2012-03-19 17:25:22

2012-03-20 11:31:58

移動瀏覽器

2017-05-19 08:05:08

瀏覽器緩存HTTP

2013-01-05 14:16:41

jQueryConditionizJS

2015-10-27 13:37:14

瀏覽器HTTP緩存

2010-02-23 08:56:39

瘦客戶端

2012-03-19 17:17:00

移動瀏覽器歐朋

2012-03-20 11:22:02

QQ手機瀏覽器

2010-07-29 09:08:20

Flex客戶端緩存

2019-01-03 13:09:58

瀏覽器緩存原理
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区三区电影在线观看 | 一区二区三区国产精品 | 粉嫩粉嫩芽的虎白女18在线视频 | 91九色麻豆 | 国产婷婷综合 | 日韩免费视频一区二区 | 国产成人久久av免费高清密臂 | 麻豆a级片 | 天天插天天操 | 欧美国产日韩在线观看成人 | 91精品国产一区二区三区动漫 | 久久亚洲精品国产精品紫薇 | 国产美女在线免费观看 | 久久精品久久久 | 9久久精品 | 欧美在线一二三 | 亚洲一区国产 | 精品欧美一区二区精品久久久 | 国产a级黄色录像 | 精品视频一区二区三区在线观看 | 国产乱性 | 欧美在线精品一区 | 伦理午夜电影免费观看 | 日韩视频在线一区 | 国产97在线看 | 91.com视频| 一级黄a视频 | 成人免费在线视频 | 日韩国产在线 | 亚洲一区中文 | 99精品免费久久久久久日本 | 免费视频一区二区 | 九九热久久免费视频 | 一本综合久久 | 黑人精品欧美一区二区蜜桃 | 欧美精品一区二区三区在线播放 | 中文字幕日韩一区 | 久久久www成人免费精品张筱雨 | 日韩电影免费在线观看中文字幕 | 婷婷中文在线 | 午夜视频在线播放 |