一個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中文網其他相關文章!

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

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

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

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

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

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

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

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


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

記事本++7.3.1
好用且免費的程式碼編輯器

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

SublimeText3漢化版
中文版,非常好用

Dreamweaver CS6
視覺化網頁開發工具