深入理解HTTP協定及原理分析之緩存
3.2 快取的實作原理
3.2.1什麼是Web快取
WEB快取(cache)位於Web伺服器和客戶端之間。
快取會根據請求保存輸出內容的副本,例如html頁面,圖片,文件,當下一個請求來到的時候:如果是相同的URL,快取直接使用副本回應存取請求,而不是向來源伺服器再次發送請求。
HTTP協定定義了相關的訊息標頭來使WEB快取盡可能好的工作。
3.2.2快取的優點
減少相應延遲:因為請求從快取伺服器(離客戶端更近)而不是來源伺服器被相應,這個過程耗時更少,讓web伺服器看上去相應更快。
減少網路頻寬消耗:當副本被重複使用時會減低客戶端的頻寬消耗;客戶可以節省頻寬費用,控制頻寬的需求的成長並更易於管理。
3.2.3與快取相關的HTTP擴充訊息頭
Expires:指示回應內容過期的時間,格林威治時間GMT
Cache-Control:更細緻的控制快取的內容
Last-Modified:回應中資源最後一次修改的時間
ETag:回應中資源的校驗值,在伺服器上某個時段是唯一識別的。
Date:伺服器的時間
If-Modified-Since:客戶端存取的該資源最後一次修改的時間,同Last-Modified。
If-None-Match:客戶端存取的該資源的檢驗值,同ETag。
3.2.4客戶端快取生效的常見流程
伺服器收到請求時,會在200OK中回送該資源的Last-Modified和ETag頭,客戶端將該資源保存在cache中,並記錄這兩個屬性。當客戶端需要發送相同的請求時,會在請求中攜帶If-Modified-Since和If-None-Match兩個頭。兩個頭的值分別是響應中Last-Modified和ETag頭的值。伺服器透過這兩個頭判斷本地資源未發生變化,客戶端不需要重新下載,回傳304回應。常見流程如下圖所示:
3.2.5 Web快取機制
HTTP/1.1中快取的目的是為了在許多情況下減少發送請求,同時在許多情況下可以不需要發送完整回應。前者減少了網路迴路的數量;HTTP利用一個「過期(expiration)」機制來為此目的。後者減少了網路應用的頻寬;HTTP用「驗證(validation)」機制來為此目的。
HTTP定義了3種快取機制:
1)Freshness:允許一個回應訊息可以在來源伺服器不被重新檢查,並且可以由伺服器和客戶端來控制。例如,Expires回應頭給了一個文件不可用的時間。 Cache-Control中的max-age標識指明了快取的最長時間;
2)Validation:用來檢查以一個快取的回應是否仍然可用。例如,如果一個回應有一個Last-Modified回應頭,快取能夠使用If-Modified-Since來判斷是否已改變,以便判斷根據情況發送請求;
3)Invalidation: 在另一個請求通過快取的時候,常常有一個副作用。例如,如果一個URL關聯到一個快取回應,但是其後跟著POST、PUT和DELETE的請求的話,快取就會過期。
3.3 斷點續傳和多執行緒下載的實作原理
HTTP協定的GET方法,支援只要求某個資源的某一部分;
206 Partial Content 部分內容回應;
Range 請求的資源範圍;
Content-Range 回應的資源範圍;在連線斷開重連時,客戶端只要求該資源未下載的部分,而不是重新請求整個資源,來實現斷點續傳。 分塊請求資源實例:Eg1:Range: bytes=306302- :請求這個資源從306302個位元組到末尾的部分;Eg2:Content-Range: bytes 30630/60402攜帶的是該資源的第306302-604047的字節,該資源共604048個位元組;客戶端透過並發的請求相同資源的不同片段,來實現對某個資源的並發分塊下載。從而達到快速下載的目的。目前流行的FlashGet和迅雷基本上都是這個原理。 多執行緒下載的原理:下載工具開啟多個發出HTTP請求的執行緒;每個http請求只要求資源檔案的一部分:Content-Range: bytes 20000-40000/47000;線程下載的檔案。 3.4 https通訊過程3.4.1什麼是httpsHTTPS(全名為:Hypertext Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容請看SSL。 見下圖:
熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

深入解讀HTTP協定狀態碼:為什麼狀態碼對於網站開發至關重要隨著網路的快速發展,網站開發變得越來越重要。在網站開發中,HTTP協定扮演著至關重要的角色。它定義了瀏覽器和伺服器之間的通訊規範,透過請求和回應來傳輸資料。而HTTP狀態碼就是在這個過程中的一部分,用來表示請求的處理情況。本文將深入解讀HTTP協定狀態碼的作用與意義。 HTTP狀態碼是一個三位數的數

PHP是一種在網路上應用廣泛的程式語言,而HTTP協定是支撐網際網路的重要協定。對於初學者而言,學習HTTP協定是入門PHP程式設計的重要一步。本文將從HTTP協議的基本概念、請求方法、狀態碼和實際應用等方面介紹HTTP協議的具體內容,以幫助初學者更好地理解和掌握HTTP協議,從而更有效地開發PHP應用程式。 HTTP協定的基本概念HTTP協定是HyperText

HTTP協定是現代互聯網中最常用的應用層協定之一,它基於客戶端-伺服器模型,用於在客戶端和伺服器之間傳輸資料。 HTTP協定透過請求和回應的方式來進行通信,而訊息頭是HTTP協定中非常重要的一部分,它用於在請求和回應中傳遞元資料。本文將探討HTTP協定訊息頭的作用。首先,HTTP協定訊息標頭可以用來傳遞請求的相關資訊。當客戶端向伺服器發送請求時,訊息標頭中的字段

Nginx反向代理伺服器是一種功能強大的Web伺服器,它不僅可以處理HTTP請求和回應,還能提供HTTP協定支援和效能最佳化。在本文中,我們將詳細解讀Nginx反向代理伺服器的HTTP協定支援和效能最佳化,並提供一些程式碼範例。一、HTTP協定支援請求處理Nginx反向代理伺服器可以接收來自客戶端的HTTP請求,並將其轉送給後端伺服器。對於每個請求,Nginx會進

Workerman開發:如何實現基於HTTP協定的Web伺服器,需要具體程式碼範例引言:隨著網際網路的快速發展,Web開發變得越來越重要。而提供Web服務的基礎就是Web伺服器。 Workerman是高效能的PHP開發框架,不僅可用於開發網路通訊伺服器,還可實現基於HTTP協定的Web伺服器。本文將介紹利用Workerman開發一個簡單的HTTPWeb服

Workerman開發:如何實現基於HTTP協定的大量文件處理系統,需要具體程式碼範例隨著互聯網和數位化技術的發展,資料處理變得越來越重要,尤其在企業中。有時候,我們需要處理大量的文件,例如圖片、影片、音訊等等。這時候,如果手工操作,不僅費時費力,而且易出錯。如何實現批次文件處理系統就是本文要探討的議題。 Workerman是一個PHP開發的高效能的socket

PHP是一種廣泛使用的伺服器端腳本語言,用來建立Web應用程式。在Web應用程式中,HTTP協定和狀態碼是必需的基礎知識,在本文中我們將探討PHP中HTTP協定和狀態碼的基礎知識。 HTTP協議是用於傳輸超文本的協議,在Web開發中被廣泛使用。透過HTTP協議,網頁瀏覽器和網頁伺服器之間透過網際網路進行交互,網頁瀏覽器向網頁伺服器傳送HTTP請求,W

403狀態碼解析:如何應對HTTP協定中的禁止存取錯誤引言:在網路世界中,當我們瀏覽網頁或傳送請求時,常常會遇到各種各樣的錯誤。其中之一就是403狀態碼,表示禁止存取錯誤。本文將對403錯誤進行解析,並提供一些因應策略,幫助讀者更好地處理這類問題。一、403狀態碼的意義與原因403狀態碼是HTTP協定中的一個客戶端錯誤狀態碼,它表示伺服器瞭解客戶端的請求,但
