搜尋
首頁運維NginxNginx快取使用

Nginx快取使用

Dec 26, 2019 pm 03:07 PM
nginx

Nginx快取使用

一個web快取坐落在客戶端和「原始伺服器(origin server)」中間,它保留了所有可見內容的拷貝。如果一個客戶端請求的內容在快取中存儲,則可以直接在快取中獲得該內容而不需要與伺服器通訊。                                               建議學習中:nginx使用上為 )

這樣一來,因為web快取應用程式使用較近的響應式可提高效能,並能提升距離使用者伺服器,因為伺服器不用每次請求都進行頁面產生工作。

在瀏覽器和應用程式伺服器之間,存在多種「潛在」緩存,如:客戶端瀏覽器快取、中間快取、內容分發網路(CDN)和伺​​服器上的負載平衡和反向代理。緩存,僅在反向代理和負載平衡的層面,就對效能提高有很大的幫助。

舉個例子說明,去年,我接手了一項任務,這項任務的內容是對一個載入緩慢的網站進行效能優化。

首先引起我注意的事情是,這個網站差不多花了超過1秒鐘才產生了主頁。經過一系列調試,我發現加載緩慢的原因在於頁面被標記為不可緩存,即為了回應每個請求,頁面都是動態生成的。

由於頁面本身並不需要經常性的變更,且不涉及個人化,那麼這樣做其實並沒有必要。

為了驗證我的結論,我將頁面標記為每5秒快取一次,僅僅做了這一個調整,就能明顯的感受到效能的提升。第一個位元組到達的時間降低到幾毫秒,同時頁面的載入明顯要更快。

並不是只有大規模的內容分發網路(CDN)可以在使用快取中受益——快取還可以提高負載平衡器、反向代理和應用伺服器前端web服務的效能。

透過上面的例子,我們看到,快取內容結果,可以更有效率的使用應​​用程式伺服器,因為不需要每次都去做重複的頁面產生工作。此外,Web快取還可以用來提高網站可靠性。

當伺服器當機或繁忙時,比起返回錯誤訊息給用戶,不如透過配置NGINX將已經快取下來的內容傳送給用戶。這意味著,網站在應用伺服器或資料庫故障的情況下,可以保持部分甚至全部的功能運作。

如何安裝和設定基礎快取

我們只需要兩個指令就可以啟用基礎快取:proxy_cache_path和proxy_cache。 proxy_cache_path用來設定快取的路徑和配置,proxy_cache用來啟用快取。

proxy_cache_path/path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m

use_temp_path=off;

server {

...

location / {

proxy_cachemy_cache;

proxy_pass http://my_upstream;

}

}

1.用於快取的本機磁碟目錄是/path/to/cache/

#2.levels在/path/to/cache/設定了一個兩層層次結構的目錄。

將大量的檔案放置在單一目錄中會導致檔案存取緩慢,所以針對大多數部署,我們建議使用兩層目錄層次結構。如果levels參數沒有配置,則NGINX會將所有的檔案放到同一個目錄中。

3.keys_zone設定一個共享記憶體區,該記憶體區用於儲存快取鍵和元數據,有些類似計時器的用途。

將鍵的拷貝放入記憶體可以讓NGINX在不檢索磁碟的情況下快速決定一個請求是`HIT`還是`MISS`,這大大提高了檢索速度。

一個1MB的記憶體空間可以儲存大約8000個key,那麼上面配置的10MB記憶體空間可以儲存差不多80000個key。

4.max_size設定了快取的上限(在上面的範例中是10G)。這是一個可選項;如果不指定具體值,那就是允許快取不斷增長,佔用所有可用的磁碟空間。

當快取達到這個上線,處理器便呼叫cache manager來移除最近最少被使用的文件,這樣把快取的空間降低到這個限制之下。

5.inactive指定了專案在不被存取的情況下能夠在記憶體中保持的時間。在上面的例子中,如果一個檔案在60分鐘內沒有被請求,則快取管理將會自動將其在記憶體中刪除,不管該檔案是否過期。此參數預設值為10分鐘(10m)。

注意,非活動內容有別於過期內容。 NGINX不會自動刪除由快取控制頭部指定的過期內容(本例中Cache-Control:max-age=120)。

過期內容只有在inactive指定時間內沒有被存取的情況下才會被刪除。

如果過期內容被存取了,那麼NGINX就會將其從原始伺服器上刷新,並更新對應的inactive計時器。

6.NGINX最初會將注定寫入快取的檔案先放入一個暫存區域,use_temp_path=off指令指示NGINX將在快取這些檔案時將它們寫入同一個目錄下。

我們強烈建議你將參數設為off來避免在檔案系統中不必要的資料拷貝。 use_temp_path在NGINX1.7版本和NGINX Plus R6中有所介紹。

最終,proxy_cache指令啟動快取那些URL與location部分相符的內容(本例中,為`/`)。你同樣可以將proxy_cache指令加入server部分,這將會將快取應用到所有的那些location中未指定自己的proxy_cache指令的服務中。

以上是Nginx快取使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
NGINX:高性能Web服務器的簡介NGINX:高性能Web服務器的簡介Apr 29, 2025 am 12:02 AM

NGINX始於2002年,由IgorSysoev開發,旨在解決C10k問題。 1.NGINX是高性能Web服務器,基於事件驅動的異步架構,適用於高並發。 2.提供反向代理、負載均衡和緩存等高級功能,提升系統性能和可靠性。 3.優化技巧包括調整worker進程數、啟用Gzip壓縮、使用HTTP/2和安全配置。

Nginx vs. Apache:看他們的架構Nginx vs. Apache:看他們的架構Apr 28, 2025 am 12:13 AM

NGINX和Apache在架構上的主要區別在於:NGINX採用事件驅動、異步非阻塞模型,而Apache使用進程或線程模型。 1)NGINX通過事件循環和I/O多路復用機制高效處理高並發連接,適合靜態內容和反向代理。 2)Apache採用多進程或多線程模型,穩定性高但資源消耗大,適合需要豐富模塊擴展的場景。

NGINX與Apache:檢查優點和缺點NGINX與Apache:檢查優點和缺點Apr 27, 2025 am 12:05 AM

NGINX適合處理高並發和靜態內容,Apache則適用於復雜配置和動態內容。 1.NGINX高效處理並發連接,適合高流量場景,但處理動態內容需額外配置。 2.Apache提供豐富模塊和靈活配置,適合複雜需求,但高並發性能較差。

nginx和apache:了解關鍵差異nginx和apache:了解關鍵差異Apr 26, 2025 am 12:01 AM

NGINX和Apache各有優劣,選擇應基於具體需求。 1.NGINX適合高並發場景,因其異步非阻塞架構。 2.Apache適用於需要復雜配置的低並發場景,因其模塊化設計。

NGINX單元:關鍵功能NGINX單元:關鍵功能Apr 25, 2025 am 12:17 AM

NGINXUnit是一個開源應用服務器,支持多種編程語言,提供動態配置、零停機更新和內置負載均衡等功能。 1.動態配置:無需重啟即可修改配置。 2.多語言支持:兼容Python、Go、Java、PHP等。 3.零停機更新:支持不中斷服務的應用更新。 4.內置負載均衡:可將請求分發到多個應用實例。

NGINX單元與其他應用程序服務器NGINX單元與其他應用程序服務器Apr 24, 2025 am 12:14 AM

NGINXUnit優於ApacheTomcat、Gunicorn和Node.js內置HTTP服務器,適用於多語言項目和動態配置需求。 1)支持多種編程語言,2)提供動態配置重載,3)內置負載均衡功能,適合需要高擴展性和可靠性的項目。

NGINX單元:架構及其工作原理NGINX單元:架構及其工作原理Apr 23, 2025 am 12:18 AM

NGINXUnit通過其模塊化架構和動態重配置功能提高了應用的性能和可管理性。 1)模塊化設計包括主控進程、路由器和應用進程,支持高效管理和擴展。 2)動態重配置允許在運行時無縫更新配置,適用於CI/CD環境。 3)多語言支持通過動態加載語言運行時實現,提升了開發靈活性。 4)高性能通過事件驅動模型和異步I/O實現,即使在高並發下也保持高效。 5)安全性通過隔離應用進程提高,減少應用間相互影響。

使用NGINX單元:部署和管理應用程序使用NGINX單元:部署和管理應用程序Apr 22, 2025 am 12:06 AM

NGINXUnit可用於部署和管理多種語言的應用。 1)安裝NGINXUnit。 2)配置它以運行不同類型的應用,如Python和PHP。 3)利用其動態配置功能進行應用管理。通過這些步驟,你可以高效地部署和管理應用,提升項目效率。

See all articles

熱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

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

熱工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

記事本++7.3.1

記事本++7.3.1

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

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具