溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Nginx緩存的設(shè)置方法

發(fā)布時(shí)間:2021-09-13 12:41:25 來源:億速云 閱讀:133 作者:chen 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“Nginx緩存的設(shè)置方法”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

在開發(fā)調(diào)試web的時(shí)候,經(jīng)常會(huì)碰到因?yàn)g覽器緩存(cache)而經(jīng)常要去清空緩存或者強(qiáng)制刷新來測試的煩惱,提供下apache不緩存配置和nginx不緩存配置的設(shè)置。在常用的緩存設(shè)置里面有兩種方式,都是使用add_header來設(shè)置:分別為Cache-Control和Pragma。

nginx:
location ~ .*\.(css|js|swf|php|htm|html )$ {
add_header Cache-Control no-store;add_header Pragma no-cache;
}

對于站點(diǎn)中不經(jīng)常修改的靜態(tài)內(nèi)容(如圖片,JS,CSS),可以在服務(wù)器中設(shè)置expires過期時(shí)間,控制瀏覽器緩存,達(dá)到有效減小帶寬流量,降低服務(wù)器壓力的目的。

以Nginx服務(wù)器為例:

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
#過期時(shí)間為30天,
#圖片文件不怎么更新,過期可以設(shè)大一點(diǎn),
#如果頻繁更新,則可以設(shè)置得小一點(diǎn)。
expires 30d;
}
location ~ .*\.(js|css)$ {
expires 10d;
}

背景】:Expires是Web服務(wù)器響應(yīng)消息頭字段,在響應(yīng)http請求時(shí)告訴瀏覽器在過期時(shí)間前瀏覽器可以直接從瀏覽器緩存取數(shù)據(jù),而無需再次請求。

相關(guān)資料

1、Cache-control策略

Cache-Control與Expires的作用一致,都是指明當(dāng)前資源的有效期,控制瀏覽器是否直接從瀏覽器緩存取數(shù)據(jù)還是重新發(fā)請求到服務(wù)器取數(shù)據(jù)。只不過Cache-Control的選擇更多,設(shè)置更細(xì)致,如果同時(shí)設(shè)置的話,其優(yōu)先級高于Expires。

http協(xié)議頭Cache-Control

值可以是public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age

各個(gè)消息中的指令含義如下:

  • Public指示響應(yīng)可被任何緩存區(qū)緩存。

  • Private指示對于單個(gè)用戶的整個(gè)或部分響應(yīng)消息,不能被共享緩存處理。這允許服務(wù)器僅僅描述當(dāng)用戶的部分響應(yīng)消息,此響應(yīng)消息對于其他用戶的請求無效。

  • no-cache指示請求或響應(yīng)消息不能緩存

  • no-store用于防止重要的信息被無意的發(fā)布。在請求消息中發(fā)送將使得請求和響應(yīng)消息都不使用緩存。

  • max-age指示客戶機(jī)可以接收生存期不大于指定時(shí)間(以秒為單位)的響應(yīng)。

  • min-fresh指示客戶機(jī)可以接收響應(yīng)時(shí)間小于當(dāng)前時(shí)間加上指定時(shí)間的響應(yīng)。

  • max-stale指示客戶機(jī)可以接收超出超時(shí)期間的響應(yīng)消息。如果指定max-stale消息的值,那么客戶機(jī)可以接收超出超時(shí)期指定值之內(nèi)的響應(yīng)消息。

Last-Modified/If-Modified-Since

  • Last-Modified/If-Modified-Since要配合Cache-Control使用。

  • Last-Modified:標(biāo)示這個(gè)響應(yīng)資源的最后修改時(shí)間。web服務(wù)器在響應(yīng)請求時(shí),告訴瀏覽器資源的最后修改時(shí)間。

  • If-Modified-Since:當(dāng)資源過期時(shí)(使用Cache-Control標(biāo)識的max-age),發(fā)現(xiàn)資源具有Last-Modified聲明,則再次向web服務(wù)器請求時(shí)帶上頭 If-Modified-Since,表示請求時(shí)間。web服務(wù)器收到請求后發(fā)現(xiàn)有頭If-Modified-Since 則與被請求資源的最后修改時(shí)間進(jìn)行比對。若最后修改時(shí)間較新,說明資源又被改動(dòng)過,則響應(yīng)整片資源內(nèi)容(寫在響應(yīng)消息包體內(nèi)),HTTP 200;若最后修改時(shí)間較舊,說明資源無新修改,則響應(yīng)HTTP 304 (無需包體,節(jié)省瀏覽),告知瀏覽器繼續(xù)使用所保存的cache。

其最終達(dá)到的就是等效于設(shè)置這三類html緩存技術(shù):

<meta http-equiv="pragma" content="no-cache"/>
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate"/> 
<meta http-equiv="expires" content="0"/>

“Nginx緩存的設(shè)置方法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI