1. 程式人生 > >三分鐘看懂Nginx伺服器的快取原理和機制

三分鐘看懂Nginx伺服器的快取原理和機制

作者:LifeIsButA_Span

來源:

http://blog.csdn.net/lifeisbuta_span/article/details/70598586

Nginx伺服器的快取原理,是在學習過程中比較重要的一個知識點,學習通透之後,對於自己的能力會有不小的提升——而且提升不只限於nginx一方面,技術理論一通百通,對於理解其他內容也會有很大幫助。

Web快取主要思想

Web快取技術的基本思想是利用客戶訪問的時間區域性性原理,對客戶已經訪問過的內容在Nginx伺服器本地建立副本,這樣在一段時間內再次訪問該資料,就不需要通過Nginx伺服器再次向後端伺服器發出請求,所以能夠減少Nginx伺服器與後端伺服器之間的網路流量,減輕網路擁塞,同時還能減小資料傳輸延遲,提高使用者訪問速度。同時,當後端伺服器宕機時,Nginx伺服器上的副本資源還能夠迴應相關的使用者請求,這樣能夠提高後端伺服器的魯棒性。

Nginx快取實現原理

基於Proxy Store的快取機制

01

404錯誤驅動

當Nginx伺服器發現,使用者請求資料在伺服器本地不存在時,會產生404錯誤,伺服器能夠捕捉該錯誤,進一步轉向後端伺服器請求相關資料,最後將後端請求到的資料傳回客戶端,並在伺服器本地快取。

02

資源不存在驅動

原理上基本等同於404錯誤驅動,不同之處在於該方法是通過location塊的location if條件判斷直接驅動Nginx伺服器和後端伺服器的通訊和Web快取,而不對資源不存在產生404錯誤。

配置檔案片段:

這兩種快取機制只能快取200狀態下的響應資料,同時不支援動態連結請求。比如:getsource?id=1和getsource?id=2這兩個請求,返回的是相同的資源。所以實際上,一般是採用Nginx搭配Squid伺服器架構實現方案。

基於memcached的快取機制

memcached在記憶體中開闢一塊空間,然後建立一個Hash表,將快取資料通過鍵/值儲存在Hash表中進行管理。memcached由服務端和客戶端兩個核心模組組成,服務端通過計算“鍵”的Hash值來確定鍵/值對在服務端所處的位置。當位置確定後,客戶端就會向對應的服務端傳送一個查詢請求,讓服務端查詢並返回所需資料。

到這裡,關於nginx伺服器快取的內容就暫時告一段落了,希望大家在這篇文章裡都能有所收穫。如果你有更好的想法,歡迎在評論區留言討論哦~