1. 程式人生 > 其它 >Client Side Cache 和 Server Side Cache 的區別

Client Side Cache 和 Server Side Cache 的區別

Cache me outside

快取是一種優化網頁載入時間並優化其使用的記憶體量的持久化機制。

Cache 的定義

出於篇幅限制,本文重點介紹 Web 快取。 當您載入網站時,網站資料(如影象、視訊和 html 文件)將被儲存。 重新載入網站後,它不會呼叫資料庫再次獲取該資料。 它只是將資料從記憶體中讀取。

快取以容量換取速度,快取通常會暫時儲存資料的子集,而資料庫的資料通常是完整且持久的。

Client Side Caching

客戶端快取通常稱為瀏覽器快取,儘管客戶端快取是一個稍微寬泛的術語。其執行原理如下圖所示:

一旦瀏覽器從伺服器請求資料,它就會將其儲存到瀏覽器建立的資料夾中。 下次開啟網頁時,它不會呼叫伺服器獲取資料,而是從瀏覽器快取資料夾中提取資料。

Server Side Caching

伺服器端快取是一個類似的概念,但稍微複雜一些。

一旦使用者向網站發出請求,其資料就會儲存在伺服器上。 下次使用者發出請求時,它只需從伺服器取回儲存的資料,無需從資料庫中提取資料,從而節省時間。

這些快取由站點管理員實現,充當瀏覽器和源伺服器之間的中介。 它們通常也基於 HTTP 快取指令。

Remote Caching

遠端快取類似於伺服器端快取,但它也可以執行應用程式來序列化和反序列化資料。 不同之處在於您可以控制遠端伺服器,而不是由其他人操作。

通常通過應用程式程式碼或使用可以利用記憶體中資料儲存的應用程式框架來檢索 Web 內容。

Server-Side vs Remote vs Client Side

主要區別在於網站的資料在本地儲存在客戶端快取中,而在伺服器端快取中可以分發給所有使用者,而在遠端中,資料也得到處理。
大多數精心設計的網站或應用程式將同時使用伺服器端和客戶端。

Why caching?

通過減少後端資源的負載和網路擁塞,快取 Web 內容有助於提高網站的響應能力。 - AWS

Downside

如果您嘗試訪問的網站已更新,則在清除快取之前您可能看不到更新。 這可能發生在您之前,特別是如果您是一名 Web 開發人員並且您正在嘗試更新您網站的設計。 如果快取儲存在您的客戶端,解決方案很簡單。

這適用於客戶端快取,如果伺服器端快取沒有正確處理這種情況,可能會在伺服器端快取上返回錯誤。
如果您使用遠端快取,它可以處理該錯誤併為您清除快取併為您載入新請求。

簡而言之,client side cache:

您的網路瀏覽器(Chrome、Firefox、Safari 或任何您使用的瀏覽器)決定記住網頁的外觀,因此不必再次請求伺服器傳送網頁。 這通過消除幾乎整個網路通訊來節省時間(和頻寬)。 但是,如果伺服器決定更改網頁的外觀,您就會遇到麻煩,因為瀏覽器對它認為頁面應該是什麼樣子的“記憶”現在已經過時了,它會給您一箇舊版本的頁面而不是新的。 這就是為什麼人們有時會告訴您“清除瀏覽器快取” - 這會迫使您的瀏覽器“忘記”頁面的外觀。 這迫使它向伺服器詢問頁面的新的、更新的版本。

server side cache:

負責生成網頁(即,將網頁放在一起)的伺服器決定記住網頁的外觀,因此不必再次生成它。 這節省了時間(但不是頻寬),因為現在伺服器不必經歷構建整個頁面的麻煩——它可以重新發送上次瀏覽器請求時傳送的任何內容。 但是,如果網頁上的任何資料需要更改,伺服器將被迫丟棄其對頁面外觀的“記憶”,並需要重新生成頁面。 如果頁面真的很複雜並且需要很多時間來生成,這種快取很有用。

更多Jerry的原創文章,盡在:"汪子熙":