nginx expires控制頁面緩存
2024-08-30 12:27:14
供稿:網友
語法:expires [time|epoch|max|pff]默認值:offexpires指令控制HTTP應答中的“Expires”和“Cache-Control”Header頭部信息,啟動控制頁面緩存的作用time:可以使用正數或負數?!癊xpires”頭標的值將通過當前系統時間加上設定time值來設定。time值還控制"Cache-Control"的值:負數表示no-cache正數或零表示max-age=time epoch:指定“Expires”的值為 1January,1970,00:00:01 GMTmax:指定“Expires”的值為31December2037 23:59:59GMT,"Cache-Control"的值為10年。-1:指定“Expires”的值為當前服務器時間-1s,即永遠過期。off:不修改“Expires”和"Cache-Control"的值
expires使用了特定的時間,并且要求服務器和客戶端的是中嚴格同步。
而Cache-Control是用max-age指令指定組件被緩存多久。
對于不支持http1.1的瀏覽器,還是需要expires來控制。所以最好能指定兩個響應頭。但HTTP規范規定max-age指令將重寫expires頭。
如果不想讓代理或瀏覽器緩存,加no-cache參數或private參數:
# expires 1d;
add_header Cache-Control no-cache;
add_header Cache-Control private;
這樣瀏覽器F5刷新時,返回的依然是200,而不是304.
記錄一個nginx控制緩存的例子:
expires 1d;
add_header Cache-Control no-cache;
add_header Cache-Control private;
if ( !-e $request_filename) {
rewrite ^(.*) http://test.zhaopin.com/index.html break;
# add_header Cache-Control no-cache;
# add_header Cache-Control private;
當我將add_header寫在rewrite之后時,發現add_header竟然不起作用了。。是因為寫進了if里面..
apache的mod_expires模塊使得在使用expires頭時能像max-age那樣以相對的方式設置日期,通過ExpiresDefault指令完成。例如:圖片等過期時間為請求開始的10年之后
<FileMatch"/.(gif|jpg|js|css)$">
ExpiresDefault "access plus 10years"
</FileMatch>
它像響應中發送Expires頭和Cache-Control max-age頭。
expires|etag控制頁面緩存區別expires:像上面文章提到的:expires指令控制HTTP應答中的“Expires”和“Cache-Control”Header頭部信息,啟動控制頁面緩存的作用time:可以使用正數或負數?!癊xpires”頭標的值將通過當前系統時間加上設定time值來設定。time值還控制"Cache-Control"的值:負數表示no-cache正數或零表示max-age=time epoch:指定“Expires”的值為 1January,1970,00:00:01 GMTmax:指定“Expires”的值為31December203723:59:59GMT,"Cache-Control"的值為10年。-1:指定“Expires”的值為當前服務器時間-1s,即永遠過期。off:不修改“Expires”和"Cache-Control"的值
expires使用了特定的時間,并且要求服務器和客戶端的是中嚴格同步。