亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > Nginx > 正文

Nginx服務器中強制使用緩存的配置及緩存優先級的講解

2024-08-30 12:27:59
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Nginx服務器中強制使用緩存的配置及緩存優先級的講解,一定程度上可以幫助大家解決Nginx不緩存或緩存失效的問題,需要的朋友可以參考下
 

nginx代理做好了,緩存也配置好了,但是發現css、js、jpg這些靜態文件統統都cached成功。但是偏偏頁面文件依舊到源服務器取。
1. nginx不緩存原因
默認情況下,nginx是否緩存是由nginx緩存服務器與源服務器共同決定的, 緩存服務器需要嚴格遵守源服務器響應的header來決定是否緩存以及緩存的時常。header主要有如下:

Cache-control:no-cache、no-store

如果出現這兩值,nginx緩存服務器是絕對不會緩存的

Expires:1980-01-01

如果出現日期比當前時間早,也不會緩存。

2. 解決不緩存方案
2.1 方法一:
修改程序或者源服務器web程序響應的header
 
2.2 方法二:
nginx代理直接加上如下一句:

proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie; 

3.緩存優先級
3.1架構圖

client端  <------------------>   nginx cache <------------------>源服務器
經過大量測試發現:nginx的過期順序是有一個優先級的。下面首先說明各個影響緩存過期的因素:
(1)inactive:在proxy_cache_path配置項中進行配置,說明某個緩存在inactive指定的時間內如果不訪問,將會從緩存中刪除。
(2)源服務器php頁面中生成的響應頭中的Expires,生成語句為:
header("Expires: Fri, 07 Sep 2013 08:05:18 GMT");
(3)源服務器php頁面生成的max-age,生成語句為:
header("Cache-Control: max-age=60");
(4)nginx的配置項 proxy_cache_valid:配置nginx cache中的緩存文件的緩存時間,如果配置項為:proxy_cache_valid 200 304 2m;說明對于狀態為200和304的緩存文件的緩存時間是2分鐘,兩分鐘之后再訪問該緩存文件時,文件會過期,從而去源服務器重新取數據。
3.2其次對需要注意的一點:源服務器的expires和nginx cache的expires配置項的沖突進行說明,場景如下
(1)源服務器端有php文件ta1.php內容如下:

<?phpheader("Expires: Fri, 07 Sep 2013 08:05:18 GMT");header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");header("Cache-Control: max-age=60");echo "ta1";?>

(2)在nginx cache服務器端的配置信息如下:

…….proxy_cache_path /data0/proxy_cache_dir levels=1:2  keys_zone=cache_one:200m inactive=5s max_size=30g;…….. location ~ .*/.(php|jsp|cgi)${  proxy_read_timeout 10s;  proxy_connect_timeout 10s;  proxy_set_header Host $host;  proxy_cache_use_stale updating;  proxy_cache_key $host$uri$is_args$args;  proxy_cache cache_one;  #proxy_ignore_headers "Cache-Control";  #proxy_hide_header "Cache-Control";  #proxy_ignore_headers "Expires";  #proxy_hide_header "Expires";  proxy_hide_header "Set-Cookie";  proxy_ignore_headers "Set-Cookie";  #add_header Cache-Control max-age=60;  add_header X-Cache '$upstream_cache_status from $server_addr';  proxy_cache_valid 200 304 2m;  #proxy_cache_valid any 0m;  proxy_pass http://backend_server;  expires 30s;}………….

從上面兩項可以看出nginx cache 服務器中expires的配置是30s,該expires的值直接決定了在瀏覽器端看到的max-age以及expires的值。而源服務器斷的代碼中設置的響應頭中的max-age為60,expires為Fri, 07 Sep 2013 08:05:18 GMT。這是源服務器的設置于nginx-cache的設置沖突了,那么著兩個屬性應該怎么設置呢?
這時client端的max-age與expires的值按照nginx cache中的expires配置項的設置,即:

Expires Fri, 07 Sep 2012 08:59:16 GMTCache-Controlmax-age=30

而nginx cache端的緩存的max-age與expire的值按照源服務器上的代碼的設置。即:

Expires Fri, 07 Sep 2013 08:05:18 GMTCache-Controlmax-age=60

現在步入正題:
3.3經過大量測試發現:對緩存的過期與清除起作用的因素的優先級從高到低一次為:
inactive配置項、源服務器設置的Expires、源服務器設置的Max-Age、proxy_cache_valid配置項
下面通過幾個實例對這幾個優先級進行說明
實例1:
服務器端php代碼:

<?phpheader("Expires: Fri, 07 Sep 2012 08:03:18 GMT");//其實是3分鐘之后header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");header("Cache-Control: max-age=180");//2分鐘//header("Cache-Control: post-check=0, pre-check=0", false);echo "ta1";?>

nginx cache 配置項

inactive 4m//4分鐘proxy_cache_valid 1m//1分鐘

現象:第一次訪問頁面ta1.php之后,各個時間的訪問結果:

  • 1分鐘之后 :HIT//這說明valid沒有起作用
  • 2分鐘之后 :HIT//這說明 源服務器設置的max-age沒有起作用
  • 3分鐘之后:MISS//這說明源服務器設置的Expires起作用了
  • 4分鐘之后:MISS//這說明inactive起作用了

實例2:

服務器端php代碼:

<?phpheader("Expires: Fri, 07 Sep 2012 08:03:18 GMT");//3分鐘之后header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");header("Cache-Control: max-age=180");//2分鐘//header("Cache-Control: post-check=0, pre-check=0", false);echo "ta1";?>

nginx cache 配置項

inactive 10s//10秒鐘proxy_cache_valid 1m//1分鐘

現象:第一次訪問頁面ta1.php之后,各個時間的訪問結果:

  • 5秒后訪問:HIT
  • 10秒后訪問: MISS
  • 15秒后訪問:HIT
  • 20秒后訪問:MISS

通過實例1和實例2綜合分析:如果inactive已經進行了設置,則緩存的過期時間以inactive設置的值為準

實例3:
服務器端php代碼:

<?phpheader("Expires: Fri, 07 Sep 1977 08:03:18 GMT");//直接過期header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");header("Cache-Control: max-age=120");//2分鐘//header("Cache-Control: post-check=0, pre-check=0", false);echo "ta1";?>

nginx cache 配置項

inactive 4m//4分鐘proxy_cache_valid 1m//1分鐘

現象:第一次訪問頁面ta1.php之后,各個時間的訪問結果:
每隔一秒訪問一次:MISS//這說明源服務器端設置的Expires屏蔽了nginx的valide和源服務器端設置的max-age的作用
實例4:
服務器端php代碼:

<?phpheader("Expires: Fri, 07 Sep 2012 08:03:18 GMT");//3分鐘之后header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");header("Cache-Control: max-age=120");//2分鐘//header("Cache-Control: post-check=0, pre-check=0", false);echo "ta1";?>

nginx cache 配置項

inactive 4m//4分鐘proxy_cache_valid 1m//1分鐘

現象:第一次訪問頁面ta1.php之后,各個時間的訪問結果:

  • 1分鐘之后 :   HIT//這說明valid沒有起作用,因為源服務器設置的Expires將valid的效果屏蔽了
  • 2分鐘之后 :   HIT//這說明 源服務器設置的max-age沒有起作用,因為源服務器設置的Expires將max-age屏蔽了
  • 3分鐘之后:    MISS//這說明服務器端設置的expires起作用了

通過實例2和實例3的現象說明:如果inactive設置的比較大,在inactive到期之前,如果valid、服務器端設置的expires、服務器端設置的max-age都進行了設置,則以服務器端設置的expires為準。

實例5:
服務器端php代碼:

<?phpheader("Expires: Fri, 07 Sep 2012 08:03:18 GMT");//3分鐘之后header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");header("Cache-Control: max-age=120");//2分鐘//header("Cache-Control: post-check=0, pre-check=0", false);echo "ta1";?>

nginx cache 配置項

inactive 4m//4分鐘#下面兩行用于消除服務器端配置的Expires響應頭的影響proxy_ignore_headers "Expires";proxy_hide_header "Expires";proxy_cache_valid 1m//1分鐘

現象:第一次訪問頁面ta1.php之后,各個時間的訪問結果:

  • 1分鐘之后   HIT //這說明valid的作用已經被服務器端的max-age屏蔽
  • 2分鐘之后   MISS//服務器端設置的max-age起作用

實例6:

服務器端php代碼:

<?phpheader("Expires: Fri, 07 Sep 2012 08:03:18 GMT");//3分鐘之后header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");header("Cache-Control: max-age=50");//50秒鐘//header("Cache-Control: post-check=0, pre-check=0", false);echo "ta1";?>

nginx cache 配置項

inactive 4m//4分鐘#下面兩行用于消除服務器端配置的Expires響應頭的影響proxy_ignore_headers "Expires";proxy_hide_header "Expires";proxy_cache_valid 2m//2分鐘

現象:第一次訪問頁面ta1.php之后,各個時間的訪問結果:

  • 50秒鐘之后 :   MISS//這說明服務器端配置的max-age起作用
  • 1分鐘之后 :   HIT//
  • 100秒鐘之后:   MISS//這說明服務器端設置的max-age起作用了

通過實例5和實例6的現象說明:如果inactive設置的比較大,而且在nginx配置文件中取消服務器端Expires對緩存的影響。在同時設置了proxy_cache_valid和服務器端設置了max-age響應頭字段的情況下,以服務器端設置的max-age的值為標準進行緩存過期處理。

3.4綜上所述:
(1)在同時設置了源服務器端Expires、源服務器端max-age和nginx cahe端的proxy_cache_valid的情況下,以源服務器端設置的Expires的值為標準進行緩存的過期處理
(2)若在nginx中配置了相關配置項,取消原服務器端Expires對緩存的影響,在同時設置了源服務器端Expires、源服務器端max-age和nginx cahe端的proxy_cache_valid的情況下,以源服務器端max-age的值為標準進行緩存的過期處理
(3)若同時取消源服務器端Expires和源服務器端max-age對緩存的影響,則以proxy_cache_valid設置的值為標準進行緩存的過期處理
(4)   Inactive的值不受上述三個因素的影響,即第一次請求頁面之后,每經過inactvie指定的時間,都要強制進行相應的緩存清理。因此inactive的優先級最高。
(5)所以對緩存過期影響的優先級進行排序為:inactvie、源服務器端Expires、源服務器端max-age、proxy_cache_valid

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品国模在线| 中文日韩电影网站| 精品亚洲永久免费精品| 亚洲人成77777在线观看网| 国产成人极品视频| 欧美日韩中文字幕日韩欧美| 国产精品高潮呻吟久久av黑人| 久久久中精品2020中文| 青草青草久热精品视频在线网站| 17婷婷久久www| 日韩最新在线视频| 亚洲国产精品久久精品怡红院| 精品人伦一区二区三区蜜桃免费| 日韩av免费在线看| 国产欧美一区二区| 国产成人精品免高潮费视频| 亚洲第一级黄色片| 久久久久久中文字幕| 欧美激情精品久久久久久久变态| 欧美最顶级的aⅴ艳星| 日韩成人高清在线| 精品国产电影一区| 亚洲色图偷窥自拍| 日韩av电影手机在线| 韩国三级电影久久久久久| 久久久久成人精品| 国产精品高潮呻吟久久av野狼| 日韩网站免费观看| 国产视频精品久久久| 91热福利电影| 668精品在线视频| 亚洲欧洲高清在线| 91亚洲精华国产精华| 亚洲午夜精品久久久久久性色| 欧美成人精品三级在线观看| 亚洲免费av片| 亚洲精品理论电影| 成人在线视频网站| 中文字幕av一区中文字幕天堂| 日韩av在线免费观看| 欧美黄色三级网站| 7m精品福利视频导航| 国产91|九色| 精品国产成人av| 日韩av快播网址| 国内精品久久久| 欧美成人精品一区| 国产精品尤物福利片在线观看| 亚洲精品一区二区久| 亚洲欧美日韩天堂| 日韩激情视频在线| 97久久精品视频| 日韩在线高清视频| 欧美大片大片在线播放| 欧美精品www| 91夜夜揉人人捏人人添红杏| 国产精品欧美激情在线播放| 亚洲一区二区三区四区视频| 丝袜情趣国产精品| 岛国精品视频在线播放| 亚洲国产精品字幕| 久久综合久久美利坚合众国| 国产精品va在线播放| 热久久99这里有精品| 成人黄色免费看| 91亚洲精品一区二区| 2019中文字幕免费视频| 韩剧1988在线观看免费完整版| xxxxx91麻豆| 亚洲天堂av综合网| 日韩美女视频中文字幕| 一区二区三区国产在线观看| 国语自产精品视频在线看| 欧美精品日韩www.p站| 亚洲精品美女视频| 黄色精品一区二区| 亚洲高清一二三区| 色小说视频一区| 亚洲电影免费观看高清完整版| 欧美大胆在线视频| 国产网站欧美日韩免费精品在线观看| 精品视频久久久| 亚洲国产精品专区久久| xvideos成人免费中文版| 色婷婷av一区二区三区在线观看| 久久亚洲精品网站| 亚洲国产中文字幕久久网| 欧美精品电影免费在线观看| 亚洲精品久久在线| 国产精品第一区| 96精品视频在线| www高清在线视频日韩欧美| 亚洲成人av片| 欧美大全免费观看电视剧大泉洋| 日韩中文字幕欧美| 国产精品久久9| 久久躁日日躁aaaaxxxx| 亚洲jizzjizz日本少妇| 欧美性猛交xxxx免费看久久久| 黄色91在线观看| 久久中国妇女中文字幕| 亚洲一级黄色片| 色偷偷噜噜噜亚洲男人| 欧美午夜片在线免费观看| 日产精品99久久久久久| xvideos亚洲| 九九九热精品免费视频观看网站| 日韩电影大片中文字幕| 欧美老少做受xxxx高潮| 久久精品国产一区二区三区| 欧美自拍视频在线观看| 日韩一区av在线| 98精品国产高清在线xxxx天堂| 国精产品一区一区三区有限在线| 97在线精品国自产拍中文| 欧美裸体xxxx| 欧美超级乱淫片喷水| 亚洲激情视频在线| 欧美日韩一区二区三区| 精品久久久久久中文字幕大豆网| 亚洲欧美日韩久久久久久| 欧美精品电影免费在线观看| 欧美理论电影在线播放| 俺也去精品视频在线观看| 一区三区二区视频| 亚洲精品国产精品乱码不99按摩| 91美女福利视频高清| 都市激情亚洲色图| 欧美黑人性猛交| 91av中文字幕| 成人激情视频免费在线| 久久久中精品2020中文| 18性欧美xxxⅹ性满足| 青青草国产精品一区二区| 亚洲自拍偷拍一区| 91精品国产高清自在线看超| 亚洲国产毛片完整版| 欧美性生交xxxxxdddd| 91中文字幕一区| 久久91亚洲精品中文字幕奶水| 国产精品丝袜一区二区三区| 欧洲s码亚洲m码精品一区| 国产成人鲁鲁免费视频a| 欧美日韩一区二区三区在线免费观看| 美女福利视频一区| 一本一本久久a久久精品牛牛影视| 色与欲影视天天看综合网| 国产亚洲欧美日韩一区二区| 欧美国产精品日韩| 综合国产在线视频| 国产午夜精品久久久| 亚洲精品国产精品久久清纯直播| 国产精品久久久久久久久久三级| 亚洲精品久久7777777| 国产欧美日韩专区发布| 久久在精品线影院精品国产| 久久久人成影片一区二区三区| 国产精品久久久久久久久久久新郎| 亚洲黄色免费三级| 青青青国产精品一区二区| 在线观看亚洲视频| 国产自摸综合网| 91av在线不卡| 亚洲电影中文字幕|