Nginx服務(wù)器的緩存原理,是在學(xué)習(xí)過(guò)程中比較重要的一個(gè)知識(shí)點(diǎn),學(xué)習(xí)通透之后,對(duì)于自己的能力會(huì)有不小的提升——而且提升不只限于nginx一方面,技術(shù)理論一通百通,對(duì)于理解其他內(nèi)容也會(huì)有很大幫助。
Web緩存主要思想
Web緩存技術(shù)的基本思想是利用客戶(hù)訪問(wèn)的時(shí)間局部性原理,對(duì)客戶(hù)已經(jīng)訪問(wèn)過(guò)的內(nèi)容在Nginx服務(wù)器本地建立副本,這樣在一段時(shí)間內(nèi)再次訪問(wèn)該數(shù)據(jù),就不需要通過(guò)Nginx服務(wù)器再次向后端服務(wù)器發(fā)出請(qǐng)求,所以能夠減少Nginx服務(wù)器與后端服務(wù)器之間的網(wǎng)絡(luò)流量,減輕網(wǎng)絡(luò)擁塞,同時(shí)還能減小數(shù)據(jù)傳輸延遲,提高用戶(hù)訪問(wèn)速度。同時(shí),當(dāng)后端服務(wù)器宕機(jī)時(shí),Nginx服務(wù)器上的副本資源還能夠回應(yīng)相關(guān)的用戶(hù)請(qǐng)求,這樣能夠提高后端服務(wù)器的魯棒性。
Nginx緩存實(shí)現(xiàn)原理
基于Proxy Store的緩存機(jī)制
01
404錯(cuò)誤驅(qū)動(dòng)
當(dāng)Nginx服務(wù)器發(fā)現(xiàn),用戶(hù)請(qǐng)求數(shù)據(jù)在服務(wù)器本地不存在時(shí),會(huì)產(chǎn)生404錯(cuò)誤,服務(wù)器能夠捕捉該錯(cuò)誤,進(jìn)一步轉(zhuǎn)向后端服務(wù)器請(qǐng)求相關(guān)數(shù)據(jù),最后將后端請(qǐng)求到的數(shù)據(jù)傳回客戶(hù)端,并在服務(wù)器本地緩存。
02
資源不存在驅(qū)動(dòng)
原理上基本等同于404錯(cuò)誤驅(qū)動(dòng),不同之處在于該方法是通過(guò)location塊的location if條件判斷直接驅(qū)動(dòng)Nginx服務(wù)器和后端服務(wù)器的通信和Web緩存,而不對(duì)資源不存在產(chǎn)生404錯(cuò)誤。
配置文件片段:
這兩種緩存機(jī)制只能緩存200狀態(tài)下的響應(yīng)數(shù)據(jù),同時(shí)不支持動(dòng)態(tài)鏈接請(qǐng)求。比如:getsource?id=1和getsource?id=2這兩個(gè)請(qǐng)求,返回的是相同的資源。所以實(shí)際上,一般是采用Nginx搭配Squid服務(wù)器架構(gòu)實(shí)現(xiàn)方案。
基于memcached的緩存機(jī)制
memcached在內(nèi)存中開(kāi)辟一塊空間,然后建立一個(gè)Hash表,將緩存數(shù)據(jù)通過(guò)鍵/值存儲(chǔ)在Hash表中進(jìn)行管理。memcached由服務(wù)端和客戶(hù)端兩個(gè)核心模塊組成,服務(wù)端通過(guò)計(jì)算“鍵”的Hash值來(lái)確定鍵/值對(duì)在服務(wù)端所處的位置。當(dāng)位置確定后,客戶(hù)端就會(huì)向?qū)?yīng)的服務(wù)端發(fā)送一個(gè)查詢(xún)請(qǐng)求,讓服務(wù)端查找并返回所需數(shù)據(jù)。
-
服務(wù)器
+關(guān)注
關(guān)注
12文章
8694瀏覽量
84524 -
nginx
+關(guān)注
關(guān)注
0文章
139瀏覽量
12112
原文標(biāo)題:三分鐘看懂Nginx服務(wù)器的緩存原理和機(jī)制
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論