瀏覽器緩存

1.緩存前端

2.瀏覽器緩存機制瀏覽器

3.瀏覽器緩存做用緩存

 

一.緩存服務器

    緩存就是數據交換的緩衝區(稱做Cache)。當某一硬件要讀取數據時,會首先從緩存中查找須要的數據,若是找到了則直接執行,找不到的話則從內存中找。ide

    Web緩存spa

    Web內容能夠緩存在客戶端(瀏覽器)、代理服務器以及服務器端(Server)。代理

    從網上找的一張圖幫助你們理解一下代理服務器:code

    

    用戶請求一個頁面,代理服務器會緩存這個頁面,其餘用戶請求這個頁面的時候直接從代理服務器返回,從而減小對Server的請求,也減輕Server處理請求的blog

壓力。內存

    白話總結:緩存就是把最經常使用的東西放在最容易取得的地方。

 

二.瀏覽器緩存機制

    1.HTML頁面的Meta標籤

<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache" />

       上述代碼設置網頁不被緩存,"Cache-Control"是在Http1.1出現的,兼容Http1.0 "Pragma";

這種寫法只有部分瀏覽器能夠支持,並且全部緩存代理服務器都不支持,由於代理服務器不解析HTML內容自己。

    2.HTTP協議頭

Cache-Control與Expires

Cache-Control與Expires的做用一致,都是指明當前資源的有效期,Cache-Control優先級高於Expires

IIS設置Cache-Control和Expires

設置前:

設置max-age:

設置Expires:

Last-Modified/ETag

       配置Last-Modified/ETag的狀況下,瀏覽器再次訪問統一URL的資源,仍是會發送請求到服務器詢問文件是否已經修改,若是沒有,服務器會只發送一個304回給

瀏覽器,告訴瀏覽器直接從本身本地的緩存取數據;若是修改過那就整個數據從新發給瀏覽器。

       Cache-Control/Expires則不一樣,若是檢測到本地的緩存仍是有效的時間範圍內,瀏覽器直接使用本地副本,不會發送任何請求。

Etag(Http1.1)解決的問題:

  1. Last-Modified標註的最後修改只能精確到秒級,若是某些文件在1秒鐘之內,被修改屢次的話,它將不能準確標註文件的新鮮度
  2. 若是某些文件會被按期生成,當有時內容並無任何變化,但Last-Modified卻改變了,致使文件無法使用緩存
  3. 有可能存在服務器沒有準確獲取文件修改時間,或者與代理服務器時間不一致等情形

        Etag是服務器自動生成或者由開發者生成的對應資源在服務器端的惟一標識符,可以更加準確的控制緩存。Last-Modified與ETag是能夠一塊兒使用的,服務器會優先

驗證ETag,一致的狀況下,纔會繼續比對Last-Modified,最後才決定是否返回304。

 

用戶操做行爲與緩存

用戶在使用瀏覽器的時候,會有各類操做,好比輸入地址後回車,按F5刷新等,這些行爲會對緩存有什麼影響呢?

用戶操做與緩存

 

沒法被瀏覽器緩存的請求:

  1. HTTP信息頭中包含Cache-Control:no-cache,pragma:no-cache,或Cache-Control:max-age=0等告訴瀏覽器不用緩存的請求
  2. POST請求沒法被緩存
  3. HTTP響應頭中不包含Last-Modified/Etag,也不包含Cache-Control/Expires的請求沒法被緩存

推薦網址:http://www.alloyteam.com/ 騰訊Web前端團隊

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息