動態

詳情 返回 返回

如何使用 Nginx 緩存提高網站性能 ? - 動態 詳情

Boosting Your Website Performance with Nginx Caching

快速加載的站點提供了更好的用户體驗並且可以擁有更高的搜索引擎排名。通過 Nginx 緩存提高你的網站性能是一個有效的方法。Nginx 是一個流行的開源 web 服務器,也可以作為 web 服務器反向代理,負載平衡器和 HTTP 緩存。

Nginx 緩存的好處

(1) Improved load times

將頻繁請求的內容存儲在內存中,Nginx 緩存減少了加載頁面所需的時間,這將為用户帶來更快的瀏覽體驗。

(2) Reduced server load

緩存減少了服務器必須處理的請求數量,從而釋放了資源並降低了總體負載。

(3) Scalability

隨着你的網站越來越受歡迎,緩存可以幫助管理不斷增長的流量,而不需要額外的服務器資源。

(4) Enhanced SEO

更快的加載時間可以提高搜索引擎排名,使您的網站更容易被潛在用户發現。

Step 1: 安裝 Nginx

首先,你需要在你的服務器上安裝 Nginx。如果你還沒有,請按照操作系統的官方安裝指南。

Step 2: 配置 Nginx 緩存

安裝 Nginx 後,需要編輯配置文件,通常位於 /etc/nginx/nginx.conf,在 http 塊中添加以下行:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;

這個指令使用的參數如下:

  • /var/cache/nginx 緩存存儲位置
  • levels=1:2 緩存目錄層級結構
  • keys_zone=my_cache:10m 緩存區及其大小
  • max_size=1g 最大緩存大小
  • inactive=60m 未使用的緩存內容被刪除的時間
  • use_temp_path=off 禁止使用臨時目錄路徑

Step 3: 將緩存添加到 Server Block

接下來,打開站點配置文件,通常位於 /etc/nginx/sites-available/your-domain.conf,找到 server 塊,添加以下行:

proxy_cache my_cache;
proxy_cache_valid 200 30m;
proxy_cache_valid 404 1m;
add_header X-Proxy-Cache $upstream_cache_status;

這些指令通過以下設置為您的網站啓用緩存:

  • proxy_cache my_cache 使用前面定義的緩存區域
  • proxy_cache_valid 200 30m 緩存成功響應 (HTTP 200) 30 分鐘
  • proxy_cache_valid 404 1m 緩存未找到響應(HTTP 404)1 分鐘
  • add_header X-Proxy-Cache $upstream_cache_status 添加一個頭在響應中顯示緩存狀態

Step 4: 測試並重新加載 Nginx 配置

編輯完配置文件後,使用以下命令測試更改

sudo nginx -t

如果測試成功,重新加載 Nginx 以應用新的設置

sudo service nginx reload

Step 5: 監控和優化 Nginx 緩存

在設置緩存之後,必須監視其有效性並根據需要進行調整。檢查網站的 X-Proxy-Cache HTTP 響應頭
,以確定內容是否從緩存中提供服務(HIT 狀態),或者是否緩存錯失(MISSBYPASS 狀態)

還可以查看 Nginx 日誌,以瞭解更多緩存行為的詳細信息。日誌默認存放在 /var/log/nginx/ 目錄下。

為了進一步優化緩存,可以考慮調整以下參數:

Cache duration

通過修改 proxy_cache_valid 指令,針對不同響應類型微調緩存持續時間。在緩存動態內容時要小心,因為過於激進的緩存可能導致提供過時的信息給用户。

Cache key

緩存 key 決定如何存儲和檢索緩存的內容。默認情況下,Nginx 使用請求 URI 作為緩存 key,你也可以通過添加 proxy_cache_key 指令來自定義。例如,可以在緩存 key 中包含請求方法和主機。

proxy_cache_key "$request_method$host$request_uri";

Cache locking

啓用緩存鎖定可以防止同時請求相同的未緩存內容,稱為 thundering herd 問題。

proxy_cache_lock on;
proxy_cache_lock_timeout 5s;

Cache bypass

在某些情況下,您可能想要繞過特定請求的緩存。例如,針對已登錄的用户不啓用緩存。

proxy_cache_bypass $cookie_user;

我的開源項目

酷瓜雲課堂-在線教育解決方案

user avatar wodekouwei 頭像 wobushiliaojian 頭像 runyubingxue 頭像 sukaaa 頭像 yuezhang_5e5e7da0beeea 頭像
點贊 5 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.