nginx-cache-control

[nginx]在 nginx 設定 Cache Control 指定圖片、javascript、與CSS的過期時間

透過網路取得資料的方式,跟從電腦中的硬碟取得資料比較起來,當然是後者取得資料的速度較快,也相對穩定。

所以如果可以將變動機會不大的檔案,例如圖片、js、css等靜態資源檔案設定 cache,告訴瀏覽器,我要保留這些檔案多久,請瀏覽器儲存在本地,每當我們瀏覽網頁,又要存取到這些相同的資源,就可以直接從本地的「瀏覽器快取」中取得,而不用每次都跟伺服器伸手要東西,這樣可以大幅降低網頁的載入速度,同時也可以節省不少的流量成本。

設定 Cache Control 的目的就在於告訴瀏覽器,請瀏覽器將這些資料儲存在本地。(一種不用每次都來找我要東西的概念XD)

 

1.用判斷路徑的方式設定

以下是指定路徑中有包含 uploads 的所有 request 的過期時間為 1M(一個月),也可以設定成 1Y(一年)/10D(十天)等。

root 是用來指定,這個 request 的路徑的 root 資料夾
(如果 nginx 前面有設定好 root,這裡通常不需要額外指定 root)

location ^~ /uploads/ {

  expires 1M;
  access_log off;
  add_header Cache-Control "public";
  root /var/www/[your_web_root_dir];

}

2.用判斷檔案類型的方式設定

location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
  expires 1M;
  access_log off;
  add_header Cache-Control "public";
}

上面的 public 也可以設定成 private,public 表示大家都可以對這筆資料做快取,也就是在這筆資料傳輸路徑上面的 CDN 都可以儲存一份在他的伺服器上。private 就表示只有使用者的瀏覽器才可以快取,中途不允許快取。

標籤: , , , ,

很愛畫虎爛的我,開始了用文章唬爛社會大眾的志業!