首頁 php教程 PHP开发 深入理解HTTP協定及原理分析之緩存

深入理解HTTP協定及原理分析之緩存

Dec 12, 2016 am 11:26 AM
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回應。常見流程如下圖所示:

深入理解HTTP協定及原理分析之緩存

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什麼是https

HTTPS(全名為:Hypertext Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容請看SSL。

見下圖:

深入理解HTTP協定及原理分析之緩存

https所使用的連接埠號碼是443。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

深入探討HTTP協定狀態碼的重要性 深入探討HTTP協定狀態碼的重要性 Feb 25, 2024 pm 11:06 PM

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

PHP入門指南:HTTP協定 PHP入門指南:HTTP協定 May 22, 2023 am 08:06 AM

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

作用解析:HTTP協定訊息頭 作用解析:HTTP協定訊息頭 Feb 25, 2024 am 11:06 AM

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

詳細解讀Nginx反向代理伺服器的HTTP協定支援與效能最佳化 詳細解讀Nginx反向代理伺服器的HTTP協定支援與效能最佳化 Aug 04, 2023 pm 01:20 PM

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

Workerman開發:如何實作基於HTTP協定的Web伺服器 Workerman開發:如何實作基於HTTP協定的Web伺服器 Nov 07, 2023 am 10:51 AM

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

Workerman開發:如何實作基於HTTP協定的批次文件處理系統 Workerman開發:如何實作基於HTTP協定的批次文件處理系統 Nov 07, 2023 pm 12:16 PM

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

PHP中的HTTP協定和狀態碼 PHP中的HTTP協定和狀態碼 May 11, 2023 pm 04:28 PM

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

403狀態碼分析:應對HTTP錯誤中的禁止存取狀況 403狀態碼分析:應對HTTP錯誤中的禁止存取狀況 Feb 18, 2024 pm 05:44 PM

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

See all articles