如何使用Nginx進行高效能的靜態檔案快取
Nginx是一款輕量級的開源Web伺服器,以其高效能和高並發能力而受到廣泛的關注和使用。除了作為Web伺服器之外,Nginx還有一個重要的功能,就是提供靜態檔案快取功能,可以大幅優化網站的存取速度和效能。本文將介紹如何使用Nginx進行高效能的靜態檔案緩存,並提供相應的程式碼範例。
server { listen 80; server_name example.com; root /path/to/static/files; location ~* .(jpg|jpeg|png|gif|css|js)$ { expires 30d; access_log off; } }
在上述配置中,listen
指定了Nginx監聽的端口,server_name
指定了伺服器的域名。 root
指定了靜態檔案所在的根目錄。 location
指令指定了符合的URL模式,以及對應的處理參數。在上面的配置中,透過正規表示式~* .(jpg|jpeg|png|gif|css|js)$
配對了以jpg、jpeg、png、gif、css或js為後綴的文件,expires
指定了快取的有效期限為30天,access_log off
則禁止了對靜態文件的存取日誌記錄。
location ~* .(jpg|jpeg|png|gif|css|js)$ { expires 30d; access_log off; add_header Cache-Control "public"; add_header Pragma public; etag off; }
在上述範例中,add_header
指令加入了兩個頭部訊息,分別是Cache-Control
和Pragma
。這兩個頭部資訊告訴客戶端和其他快取伺服器在一定時間內可以使用快取的副本。 etag off
停用了Etag頭部訊息,因為在某些情況下,Etag可能會導致一些相容性問題。
Cache-Control
和Expires
字段,以及回應內容的大小。如果快取生效,那麼在第一次存取靜態檔案後,再次要求時會看到Cache-Control
和Expires
的值與上述配置一致,並且回應內容的大小會變得非常小。 另外,可以使用命令列工具如curl來查看HTTP回應頭部資訊。例如,可以執行以下命令來查看一個圖片檔案的HTTP回應頭部資訊:
$ curl -I example.com/path/to/image.jpg
如果快取生效,那麼你會在結果中看到類似下面的行:
Cache-Control: public, max-age=2592000 Expires: Thu, 10 Aug 2023 08:16:50 GMT
style.css
,我們可以將其重新命名為style.v1.css
,並更新Nginx的設定檔以符合新的檔案名稱。這樣一來,每當CSS檔案被修改時,只需要更新檔案名稱中的版本號碼即可。 另外,Nginx也提供了一個reload的指令,可以在不停止伺服器的情況下重新載入設定檔。例如,可以執行以下命令來重新載入Nginx的設定檔:
$ nginx -s reload
這樣一來,Nginx將會重新讀取設定文件,並且更新的設定會立即生效。
總結
透過使用Nginx進行靜態檔案緩存,可以顯著提高網站的效能和存取速度。在本文中,我們介紹如何設定Nginx以啟用靜態檔案存取和快取功能,並提供了相應的程式碼範例和驗證方法。希望這些內容能幫助你優化你的網站效能。
以上是如何使用Nginx進行高效能的靜態檔案快取的詳細內容。更多資訊請關注PHP中文網其他相關文章!