NGINX下配置CACHE-CONTROL
?
?
轉(zhuǎn)載的,那個頁面讓關(guān)了,,沒標(biāo)明請諒解。
HTTP協(xié)議的Cache -Control指定請求和響應(yīng)遵循的緩存機(jī)制。
在請求消息或響應(yīng)消息中設(shè)置 Cache-Control并不會影響另一個消息處理過程中的緩存處理過程。
請求時的緩存指令包括no-cache、no-store、max-age、 max-stale、min-fresh、only-if-cached等。
響應(yīng)消息中的指令包括public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age。
瀏覽器中關(guān)于Cache的3屬性:
Cache-Control:
設(shè)置相對過期時間, max-age指明以秒為單位的緩存時間. 若對靜態(tài)資源只緩存一次, 可以設(shè)置max-age的值為315360000000 (一萬年).
Http協(xié)議的cache-control的常見取值及其組合釋義:
no-cache: 數(shù)據(jù)內(nèi)容不能被緩存, 每次請求都重新訪問服務(wù)器, 若有max-age, 則緩存期間不訪問服務(wù)器.
no-store: 不僅不能緩存, 連暫存也不可以(即: 臨時文件夾中不能暫存該資源)
private(默認(rèn)): 只能在瀏覽器中緩存, 只有在第一次請求的時候才訪問服務(wù)器, 若有max-age, 則緩存期間不訪問服務(wù)器.
public: 可以被任何緩存區(qū)緩存, 如: 瀏覽器、服務(wù)器、代理服務(wù)器等
max-age: 相對過期時間, 即以秒為單位的緩存時間.
no-cache, private: 打開新窗口時候重新訪問服務(wù)器, 若設(shè)置max-age, 則緩存期間不訪問服務(wù)器.
private, 正數(shù)的max-age: 后退時候不會訪問服務(wù)器
no-cache, 正數(shù)的max-age: 后退時會訪問服務(wù)器
點(diǎn)擊刷新: 無論如何都會訪問服務(wù)器.
Expires:
設(shè)置以分鐘為單位的絕對過期時間, 優(yōu)先級比Cache-Control低, 同時設(shè)置Expires和Cache-Control則后者生效.
Last-Modified:
該資源的最后修改時間, 在瀏覽器下一次請求資源時, 瀏覽器將先發(fā)送一個請求到服務(wù)器上, 并附上If-Unmodified-Since頭來說明瀏覽器所緩存資源的最后修改時間, 如果服務(wù)器發(fā)現(xiàn)沒有修改, 則直接返回304(Not Modified)回應(yīng)信息給瀏覽器(內(nèi)容很少), 如果服務(wù)器對比時間發(fā)現(xiàn)修改了, 則照常返回所請求的資源.
?
注意:
Last-Modified屬性通常和Expires或Cache-Control屬性配合使用, 因為即使瀏覽器設(shè)置緩存, 當(dāng)用戶點(diǎn)擊”刷新”按鈕時, 瀏覽器會忽略緩存繼續(xù)向服務(wù)器發(fā)送請求, 這時Last-Modified將能夠很好的減小回應(yīng)開銷.
?
ETag將返回給瀏覽器一個資源ID, 如果有了新版本則正常發(fā)送并附上新ID, 否則返回304, 但是在服務(wù)器集群情況下, 每個服務(wù)器將返回不同的ID, 因此不建議使用ETag.
?
以上描述的客戶端瀏覽器緩存是指存儲位置在客戶端瀏覽器, 但是對客戶端瀏覽器緩存的實(shí)際設(shè)置工作是在服務(wù)器上的資源中完成的. 雖然剛才我們介紹了有關(guān)于客戶端瀏覽器緩存的屬性, 但是實(shí)際上對這些屬性的設(shè)置工作都需要在服務(wù)器的資源中做設(shè)置. 我們有兩種操作手段對瀏覽器緩存進(jìn)行設(shè)置, 一個是通過頁面指令聲明來設(shè)置, 另外一個是通過編程方式來設(shè)置.
Nginx的ngx_http_headers_module模塊可以對Cache-Control頭相關(guān)的東西進(jìn)行配置
例如:
? ? # 相關(guān)頁面設(shè)置Cache-Control頭信息
? ? 例一:
? ?if ($request_uri ~* "^/$|^/search/.+/|^/company/.+/") {
? ? ?add_header??? Cache-Control? max-age=3600;
? ? }
? ?例二:
location ~ .*\.(css|js|swf|php|htm|html )$ {add_header Cache-Control no-store;
}
例三: location ~ .*\.(js|css)$ {
expires 10d;
}
轉(zhuǎn)載于:https://www.cnblogs.com/guxiaobei/p/8287763.html
總結(jié)
以上是生活随笔為你收集整理的NGINX下配置CACHE-CONTROL的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Attention Model
- 下一篇: ubuntu-server-18.04