Nginx vs Varnish Caching 比較

Nginx vs Varnish Caching

Varnish 是一種 HTTP 加速器程式,開發、維運或系統工程師,經常使用它來優化其 Web 伺服器的設置,以幫助您提高網站和應用的速度。

可能許多人不知道的是 Nginx 自帶了高性能的緩存機制 fastcgi_cache。

之前,fastcgi_cache 的功能被認為是不完美的,由於清除快取不如 Varnish 方便,還好 EasyEngine 開發清除快取 Nginx Helper 外掛,已經解決使用 ngx_cache_purge 模組在 WordPress 後台清除快取的問題。

Cleans nginx's fastcgi/proxy cache or redis-cache whenever a post is edited/published. Also does a few more things.

Varnish vs Nginx

引用網路上的解釋

  • Nginx 是一個開源的 Web 服務器,也可以作為代理使用。一些大型購物網站使用它作為他們的網絡服務器,因為已知在處理並發連接方面高效且快速,此外,某些 Apache Web 服務器使用者將 Nginx 與 Apache 結合使用,將其用作反向代理。
  • Varnish 並不是一個 Web 服務器。相反的,其目的是作為前端加速器或反向代理,但是與 Nginx 最大的不同的是,它並不是一個運行整個應用程序的獨立解決方案,您仍然需要專用的 Web 服務器才能使用 Varnish,VCL 或 Varnish 配置語言是 Varnish 中使用的語言,用於指定某些請求處理規則和緩存策略。

性能

Nginx 和 Varnish 性能非常相似。這兩種服務方式都可以用作反向代理和負載均衡器,還可以做為配置緩存,並可阻擋 DDoS 攻擊。

最大的差別 Nginx 支援 SSL,Varnish 免費版不支援 SSL。直到 2016 年 9 月,Varnish 才開始支持 HTTP/2。

快取功能

當 Varnish 和 Nginx 來做緩存靜態內容時,Varnish 具有更大的靈活性,可以在複雜的系統結構使用快取,並且 Varnish 有自己清除快取的機制。另一方面 Nginx 本身並不支持這一點,只能安裝 ngx_cache_purge 模組來滿足這個需求。

從上述的比較,雖然 Varnish 更靈活,但以我們目前所使用的系統架構 Nginx + fastcgi_cache_purge 已經可以滿足 WordPress 快取的要求,系統架構上並不會複雜,並且好維護。

結語

每一個程序都有一體二面,Varnish 功能上或架構上勝過 Nginx;但就以快取機制來說,我的觀點是不要一個那麼複雜的 Web 伺服器結構系統,也意味著有更少的潛在故障和更具容易維護的解決方式,Nginx 的 fastcgi_cache_purge 仍然可以自行配置,並且可以滿足我大多數的需求及速度。

我在另一個部落格 (yungke.me) 有發表一篇「WordPress 配置 Nginx FastCGI 靜態頁面快取及負載測試」,關於 Nginx vs Varnish 有更清楚的說明,這也是我一直對 Varnish 沒有信仰的原因。

WordPress 的主要性能瓶頸是由處理 PHP 引起的,因此為提高我們網站的性能,我們需要減少 Web 主機處理 PHP 和數據庫的數量。這個就是為什麼要在 WordPress 加入頁面快取的目的。

參考文件:

Nginx vs Varnish: which one is better?

Nginx vs Varnish: which one is faster? which one is better? Which is the one right for my application and caching needs? Get your answers here.

Why we never use Varnish with Nginx!

Our reasons for NOT using Varnish with Nginx

Featured Photo by chuttersnap on Unsplash

Follow Me

我發了這篇文章
如果您對 燕子飛時 的文章有興趣 !
邀請您按個讚 Like !!
通過電子郵件訂閱 燕子飛時部落格

輸入您的電子郵件地址以訂閱 - 燕子飛時部落格,並通過電子郵件接收新帖子的通知。

Join 2 other subscribers

Back to top