1. 程式人生 > >200 ok 幾種狀態

200 ok 幾種狀態

瀏覽器載入資源成功一般會有幾種狀態

200 ok          ----  從原始伺服器請求成功

200 ok from cache      ----

200 ok from disk cache  ----

200 ok from memory cache ----

304 not modified          ----  向伺服器傳送請求,驗證新鮮度,足夠新鮮,伺服器會返回 304狀態

from cache 表示客戶端沒有請求伺服器, 直接使用瀏覽器本地快取

1. 首先from cache  和 not modified的區別

from cache 瀏覽器沒有和伺服器確認,直接使用了快取

not modified 是瀏覽器和伺服器多確認了一次快取有效性,再用的快取。

那麼,兩者觸發的時機有什麼區別呢?200 OK (from cache) 是直接點選連結訪問,輸入網址按回車訪問也能觸發;而 304 Not Modified 是重新整理頁面時觸發,或是設定了長快取、但 Entity Tags 沒有移除時觸發。

直接訪問有快取的網站都觸發 200 OK (from cache), 重新整理瀏覽器則會觸發 304 Not Modified,同一域名下,沒有 Entity Tag 的資源直接訪問,是 200 OK (from cache) 的結果,同一域名下,有 Entity Tag ,直接訪問就會觸發 304 Not Modified。

2. from memory cache 和 from disk cache 的區別

MemoryCache顧名思義,就是將資源快取到記憶體中,等待下次訪問時不需要重新下載資源,而直接從記憶體中獲取。Webkit早已支援memoryCache。

    目前Webkit資源分成兩類,一類是主資源,比如HTML頁面,或者下載項,一類是派生資源,比如HTML頁面中內嵌的圖片或者指令碼連結,分別對應程式碼中兩個類:    MainResourceLoader和SubresourceLoader。雖然Webkit支援memoryCache,但是也只是針對派生資源,它對應的類為CachedResource,用於儲存原始資料(比如CSS,JS等),以及解碼過的圖片資料。

diskCache顧名思義,就是將資源快取到磁碟中,等待下次訪問時不需要重新下載資源,而直接從磁碟中獲取,它的直接操作物件為CurlCacheManager。它與memoryCache最大的區別在於,當退出程序時,記憶體中的資料會被清空,而磁碟的資料不會,所以,當下次再進入該程序時,該程序仍可以從diskCache中獲得資料,而memoryCache則不行。

    diskCache與memoryCache相似之處就是也只能儲存一些派生類資原始檔。它的儲存形式為一個index.dat檔案,記錄儲存資料的url,然後再分別儲存該url的response資訊和content內容。Response資訊最大作用就是用於判斷伺服器上該url的content內容是否被修改。具體詳見:

參考連線:

http://div.io/topic/854

https://segmentfault.com/a/1190000008289847

http://blog.csdn.net/m632587166/article/details/50732205?locationNum=14

http://blog.csdn.net/longxibendi/article/details/41630389