HTTP緩存介紹
HTTP緩存是一種通過存儲網絡資源的副本,以減少對原始服務器請求的技術。當客戶端再次請求相同資源時,如果該資源未過期,服務器可以直接從本地緩存中提供響應,而無需再次從原始服務器獲取。這大大減少了網絡延遲,提高了加載速度,并減輕了服務器的負載。HTTP緩存機制是優化web性能的重要手段,也是優化用戶體驗的重要一環
HTTP緩存主要依賴于兩個HTTP頭字段:Expires和Cache-Control。Expires字段定義了資源在緩存中的過期時間,而Cache-Control字段提供了一種更靈活的緩存控制機制,包括指令如max-age、public、private等。
HTTP緩存可以分為兩種類型:強緩存和協商緩存。強緩存由瀏覽器直接控制,當資源未過期時,瀏覽器會直接使用緩存的副本,而不向服務器發送請求。協商緩存則是在資源過期后,瀏覽器會向服務器發送請求,以驗證緩存的副本是否仍然有效。強緩存通過 HTTP 頭部直接判斷是否命中,而協商緩存則需要與服務器進行驗證。了解這兩種緩存機制的工作原理,能幫助開發者更好地優化網頁性能。
- 強緩存:
Expires: 絕對時間。
Cache-Control: max-age。
- 協商緩存:
Last-Modified 和 If-Modified-Since。
ETag 和 If-None-Match。
使用緩存的優點
-
緩存減少了冗余的數據傳輸,因為畢竟每次http事務請求的東西都是一樣的時候,多次發送同樣的數據是不必要和冗余的!
-
緩存緩解了網絡瓶頸的問題,不需要更多的帶寬就能夠更快地加載頁面!
-
緩存降低了對原始服務器的要求,因為想象一下,從一個性能很差勁的原始服務器和從一個性能和牛逼的緩存服務器請求事務,肯定會彌補服務器的缺點的,同時也會減少服務器過載情況,因為大部分請求都由緩存代勞處理了!
-
緩存降低了距離時延,因為從較遠的地方加載頁面會更慢一些!
冗余的數據傳輸
- 每次都從原始服務器拿數據,那么帶來的后果就是:多次發送重復的數據浪費流量、耗費昂貴的網絡帶寬從而降低傳輸速率、加大服務器的負載。而有了緩存之后這些問題都可以迎刃而解!
帶寬瓶頸
-
帶寬瓶頸說明的問題:很多網絡為本地客戶端配置的帶寬要比遠程服務器配置的帶寬要寬,如果在這種狀況下客戶端去請求遠程服務器,那么客戶端將會以一種的較低的速度去請求服務端,從而沒有發揮出客戶端帶寬寬的長處!如果在客戶端方向配置一個高速緩存服務器,那么就可以很快的得到響應,由此也看出帶寬對報文傳輸速率的影響!
瞬間擁塞 -
瞬間擁塞描述的是這樣一種情況:一個爆炸性的新聞和熱點事件,如果再沒有配置緩存的情況下,那么在短時間之內,服務器將會收到突變的請求增長,負荷會爆炸