亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2016年01月19日 09:38:41   作者:lmdkfs  
這篇文章主要介紹了Nginx服務器中強制使用緩存的配置及緩存優(yōu)先級的講解,一定程度上可以幫助大家解決Nginx不緩存或緩存失效的問題,需要的朋友可以參考下

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

Cache-control:no-cache、no-store

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

Expires:1980-01-01

如果出現(xiàn)日期比當前時間早,也不會緩存。

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

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

3.緩存優(yōu)先級
3.1架構圖
client端  <------------------>   nginx cache <------------------>源服務器
經(jīng)過大量測試發(fā)現(xiàn):nginx的過期順序是有一個優(yōu)先級的。下面首先說明各個影響緩存過期的因素:
(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;說明對于狀態(tài)為200和304的緩存文件的緩存時間是2分鐘,兩分鐘之后再訪問該緩存文件時,文件會過期,從而去源服務器重新取數(shù)據(jù)。
3.2其次對需要注意的一點:源服務器的expires和nginx cache的expires配置項的沖突進行說明,場景如下
(1)源服務器端有php文件ta1.php內容如下:

<?php
header("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 GMT
Cache-Controlmax-age=30

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

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

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

<?php
header("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分鐘

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

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

實例2:

服務器端php代碼:

<?php
header("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分鐘

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

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

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

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

<?php
header("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分鐘

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

<?php
header("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分鐘

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

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

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

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

<?php
header("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分鐘

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

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

實例6:

服務器端php代碼:

<?php
header("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分鐘

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

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

通過實例5和實例6的現(xiàn)象說明:如果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的值不受上述三個因素的影響,即第一次請求頁面之后,每經(jīng)過inactvie指定的時間,都要強制進行相應的緩存清理。因此inactive的優(yōu)先級最高。
(5)所以對緩存過期影響的優(yōu)先級進行排序為:inactvie、源服務器端Expires、源服務器端max-age、proxy_cache_valid


相關文章

  • nginx配置多個前端項目實現(xiàn)步驟

    nginx配置多個前端項目實現(xiàn)步驟

    本文主要介紹了nginx配置多個前端項目實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • 使用nginx方式實現(xiàn)http轉換為https的示例代碼

    使用nginx方式實現(xiàn)http轉換為https的示例代碼

    這篇文章主要介紹了使用nginx方式實現(xiàn)http轉換為https的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • Nginx中使用gzip_http_version解決CDN只支持http 1.0問題

    Nginx中使用gzip_http_version解決CDN只支持http 1.0問題

    這篇文章主要介紹了Nginx中使用gzip_http_version解決CDN只支持http 1.0問題,問題原因是在Header信息中看到Transfer-Encoding: chunked,使用本文方法就可以解決這個問題,需要的朋友可以參考下
    2014-09-09
  • Nginx服務器下使用rewrite重寫url以實現(xiàn)偽靜態(tài)的示例

    Nginx服務器下使用rewrite重寫url以實現(xiàn)偽靜態(tài)的示例

    這篇文章主要介紹了Nginx服務器下使用rewrite重寫url以實現(xiàn)偽靜態(tài)的示例,這里舉了Discuz!和WordPress這兩個常用的PHP程序,需要的朋友可以參考下
    2015-12-12
  • 如何利用nginx做代理緩存淺析

    如何利用nginx做代理緩存淺析

    Nginx緩存主要是用于減輕后端服務器的負載,提高網(wǎng)站并發(fā)量,提升用戶體驗度,下面這篇文章主要給大家介紹了關于如何利用nginx做代理緩存的相關資料,需要的朋友可以參考下
    2021-12-12
  • 詳解Nginx服務器的配置中開啟文件Gzip壓縮的方法

    詳解Nginx服務器的配置中開啟文件Gzip壓縮的方法

    這篇文章主要介紹了Nginx服務器的配置中開啟文件Gzip壓縮的方法,可以對CSS和JavaScript以及各種圖片等web傳輸?shù)奈募M行壓縮,需要的朋友可以參考下
    2016-01-01
  • 為何要小心Nginx的add_header指令詳解

    為何要小心Nginx的add_header指令詳解

    這篇文章主要給大家介紹了關于為何說要小心Nginx的add_header指令的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-02-02
  • 本地HTTPS環(huán)境搭建的完整步驟記錄

    本地HTTPS環(huán)境搭建的完整步驟記錄

    這篇文章主要給大家介紹了關于本地HTTPS環(huán)境搭建的相關資料,文中通過示例代碼將實現(xiàn)的步驟一步步介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友下面隨著小編來一起學習學習吧
    2018-05-05
  • nginx配置反向代理時遇到的路徑問題

    nginx配置反向代理時遇到的路徑問題

    這篇文章主要介紹了nginx配置反向代理時遇到的路徑問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • CentOS下編譯安裝nginx及配置縮略圖插件的方法教程

    CentOS下編譯安裝nginx及配置縮略圖插件的方法教程

    這篇文章主要給大家介紹了在CentOS系統(tǒng)下編譯安裝nginx及配置縮略圖插件的方法教程,文中給出了詳細的安裝步驟,對大家具有一定的參考價值,有需要的朋友們下面來一起看看吧。
    2017-02-02

最新評論