設置緩存,可以提高網站性能。
當網站的部分內容,比如新聞站的圖片,一旦發布就不太可能發生更改,此時需要用戶在訪問一次頁面之后,把該頁面的圖片緩存在用戶的瀏覽器端一段時間,就可以用到 nginx 的 expires 設置。
expires 的語法參見:http://nginx.org/en/docs/http/ngx_http_core_module.html
location = /images/default.gif { expires 30s; # 30m:30 分鍾,2h:2 小時,30d:30 天 }
expires 的上下文包括 location、if in location
【例】
訪問 http://192.168.254.100/
圖片 nginx.png 的響應狀態是 200 ok
此時圖片的 http 頭信息:
再次刷新該頁面
圖片 nginx.png 的響應狀態是 304 Not Modified,即來自瀏覽器緩存
此時圖片的的 http 頭信息:
雖然圖片該次是從瀏覽器緩存中讀取,但是瀏覽器仍然像服務器發出了一次 http 請求
如果要實現在一定時間內,瀏覽器不需要向服務器發送 http 請求,而直接從本地緩存中讀取圖片,可以在 nginx.conf 中進行配置:
[root@localhost nginx]# vim conf/nginx.conf
nginx.conf(添加 location 段 或者 修改 location ~ image ):
location ~ image { root /var/www/;
expires 1d; index index.html; }
平滑重啟 nginx
強刷(ctrl+f5)該頁面,此時圖片的 http 響應信息:
86400 是 1 天的秒數。
再次刷新該頁面(按瀏覽器的刷新按鈕):
在地址欄回車刷新頁面:
沒有產生實際請求。
在 chrome 瀏覽器下,通過地址欄回車刷新頁面時的 http 響應信息:
from cache 表名沒有產生實際請求。
修改 location ~ image 或者 添加 location,使緩存圖片不僅限於 image 文件夾,而是網站中所有的 png|jpg|jpeg|gif (不區分大小寫)圖片都進行緩存設置:
location ~* \.(jpg|jpeg|png|gif){
expires 1d;
}
平滑重啟 nginx。
驗證:訪問 ecshop 目錄下的某個圖片
沒有產生實際請求。
點擊瀏覽器刷新按鈕,查看該圖片的 http 響應頭信息:
說明此次 location 配置成功。