透過網路取得資料的方式,跟從電腦中的硬碟取得資料比較起來,當然是後者取得資料的速度較快,也相對穩定。
所以如果可以將變動機會不大的檔案,例如圖片、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 就表示只有使用者的瀏覽器才可以快取,中途不允許快取。