缓存原理
1、緩存的概念
緩存指的是將需要頻繁訪問的網絡內容存放在離用戶較近、訪問速度更快的系統中,以提高內容訪問速度的一種技術。緩存服務器就是存放頻繁訪問內容的服務器。
2、緩存的作用
a. 減少了冗余的數據傳輸,可以節省寬帶; b.減少了服務器的負擔,優化性能; c.加快了內容訪問的速度。
3、web緩存服務器的原理
web緩存服務器的應用模式主要是正向代理和反向代理。
正向代理(Proxy)模式是代理網絡用戶訪問Internet,客戶端將本來要直接返送到internet上源服務器的鏈接請求發送給代理服務器處理。正向代理的目的是加速用戶的在使用瀏覽器訪問Internet時的請求響應時間,并提高廣域網線路的利用率。正向代理瀏覽器無需和該站點建立聯系,只訪問到web緩存即可。通過正向代理大大提高了后續用的的訪問速速,使他們無需再穿越internet,只要從本地web緩存就可以獲取所需要的信息,避免了帶寬問題,同時可以大量減少重復請求在網絡上的傳輸,從而降低網絡流量,節省資費。
反向代理(Reverse Proxy)模式是針對web服務器加速功能的,在該模式中,緩存服務器放置在web應用服務器的前面,當用戶訪問web應用服務器的時候,首先經過緩存服務器,并肩用戶的請求和易用服務器應答的內容寫入緩存服務器中,從而為后續用戶的訪問提供更快的響應。
4、緩存區別
兩種主要的web緩存:
直接緩存:將用戶頻繁訪問的來自Internet服務器的web對象的拷貝保存在企業本地網絡中。
反向緩存:企業內部web服務器的web對象的拷貝保存在企業網絡邊緣的代理服務器上以提高外界訪問企業站點的性能。
web緩存根據不同等級配置:
本地緩存:將web對象緩存的拷貝保存在本地計算機中。大多數流行的web瀏覽器默認情況下保留一個先前訪問對象的緩存。
本地緩存拷貝只是在用戶頻繁的從同一臺機器訪問頁面時有用。
代理緩存:代理服務器是為公司內的多個用戶/客戶計算機緩存web對象的單獨機器。它們是位于客戶端和托管的web服務器之間的計算機,而且他們比本地緩存效率更高,因為在企業本地網絡中的任何用戶或計算機訪問某個web對象時,緩存拷貝對想訪問該對象的任何其他用戶/計算機是可用的,無需到internet服務器上再次下載它。代理緩存可以在網絡邊緣與防火墻結合使用。
5、Http緩存
Http緩存指的是當web請求抵達緩存時,如果本地有“已緩存”的副本,就可以從本地存儲設備而不是從原始服務器中提取這個文檔。
http中具有緩存功能的是瀏覽器緩存,以及緩存代理服務器。
6. 緩存新鮮度
web服務器主要是通過2種方式來判斷瀏覽器緩存是否是最新的。
第一種,瀏覽器把緩存文件的最后修改時間通過header?“If-Modified-Since”來告訴web服務器。
第二種,瀏覽器把緩存文件的Etag,通過header “If-None-Match”,來告訴web服務器。
通過最后修改時間,判斷緩存新鮮度:
1)瀏覽器客戶端想請求一個文檔,? 首先檢查本地緩存,發現存在這個文檔的緩存,? 獲取緩存中文檔的最后修改時間,通過: If-Modified-Since, 發送Request給Web服務器。
2)Web服務器收到Request,將服務器的文檔修改時間(Last-Modified): 跟request header 中的,If-Modified-Since相比較, 如果時間是一樣的, 說明緩存還是最新的, Web服務器將發送304 Not Modified給瀏覽器客戶端, 告訴客戶端直接使用緩存里的版本。
3)假如該文檔已經被更新了。Web服務器將發送該文檔的最新版本給瀏覽器客戶端。
通過ETag,判斷緩存新鮮度:
ETag是Web服務端產生的,然后發給瀏覽器客戶端。瀏覽器客戶端是不用關心Etag是如何產生的。
為什么使用ETag呢? 主要是為了解決Last-Modified 無法解決的一些問題。
1)某些服務器不能精確得到文件的最后修改時間, 這樣就無法通過最后修改時間來判斷文件是否更新了。
2)?某些文件的修改非常頻繁,在秒以下的時間內進行修改. Last-Modified只能精確到秒。
3)?一些文件的最后修改時間改變了,但是內容并未改變。 我們不希望客戶端認為這個文件修改了。
7.瀏覽器可以設置不是用緩存
方法一:ctrl+F5強制刷新瀏覽器;方法二:設置IE;
設置IE的步驟:
打開IE,點擊工具欄上的,“工具”->Internet選項->常規->瀏覽歷史記錄? 設置,選擇“從不”,然后保存。之后點擊“刪除”,把Internet臨時文件都刪掉(IE緩存的文件就是Internet臨時文件)。
8.按F5刷新瀏覽器與地址欄輸入地址后回車的區別
按F5刷新瀏覽器,瀏覽器會去web服務器驗證緩存。
在地址欄輸入網址后回車,瀏覽器會直接使用有效的緩存,而不會發http request 去服務器驗證緩存,這種情況叫做緩存命中。
?
總結
- 上一篇: chrome frame 在 ifram
- 下一篇: 前端学习(1044):本地存储实现数据录