nginx添加緩存


參考資料   https://www.cnblogs.com/wangzhilei/p/6706102.html

 

Nginx實現頁面緩存

 

頁面緩存

1、緩存指令

Nginx的緩存配置比較直觀簡單,具體有下面幾個指令需要知道:

A、proxy_cache_path

格式:proxy_cache_path path [levels=numbers] keys_zone=zone_name:zone_size[inactive=time] [max_size=size]

說明:

path -緩存文件存放的位置

levels -緩存目錄結構,可以是1、2、3位數字作為目錄,最多是3位數字如:1,1:2

keys_zone -指定緩存池名字及大小,每個定義緩存路徑必須不同

inactive -設置每個緩存區緩存文件的有效時長,超過該時長沒被訪問的緩存被刪除

max_size -設置不活動的緩存大小,不活動的緩存超過該大小后被刪除

B、proxy_cache

格式:

proxy_cache cache_name

說明:

指定緩存區域的名字,一個相同的區域可以在不同的地方使用。

C、proxy_cache_valid

格式:

proxy_cache_valid reply_code [reply code…|any] time;

說明:

reply_code -不同的應答代碼

time -為不同應答設置不同緩存時長 默認為分鍾m

any - 代表任何代碼

 

2、頁面緩存設置

A、新建緩存頁面

$ mkdir –pv /nginx/cache/webpages

B、配置nginx.conf

proxy_cache_path /nginx/cache/webpages levels=1:2 keys_zone=webpages:30mmax_size=2g;

    server {

        listen       80;

        server_name  localhost;

        charset utf-8;

 

        location / {

            proxy_passhttp://webservers;

            proxy_set_header X-Real-IP$remote_addr;

            proxy_cache webpages;

            proxy_cache_valid 20010m;

        }

    }

最后,測試下配置是否正確:

$sudo nginx –t

然后,重載下nginx服務:

$sudo nginx –s reload

 

C、測試結果

瀏覽器輸入:http://127.0.0.1 然后查看緩存路徑下是否生成緩存文件,以及緩存文件格式是否正確,緩存的結果:

/nginx/cache/webpages/f/63/681ad4c77694b65d61c9985553a2763f

上面的路徑規則已經按照我們預期設置生成,緩存文件格式是url的hash格式,下面可以查看下這個文件是否是我們使用的頁面,默認生成的緩存目錄f 級別是不允許進入訪問的,為了演示我已經給予其777權限了。

$cat 681ad4c77694b65d61c9985553a2763f

 

 

D、如何知道是否訪問緩存?

答案很簡單,我們使用谷歌瀏覽器瀏覽網頁,然后打開開發者面板,查看里面的Response Headers響應頭中的信息:

但從上面是看不出是否調用了緩存文件,因為需要額外配置下。首先,要了解下兩個緩存變量:

$server_addr - 顯示的服務器地址

$upstream_cache_status - 緩存的狀態 可能的值為:MISS(未命中)、Hint(命中)、Expired(請求傳遞到后台)、Stale(后端得到過期的應答)、Updating(正更新,使用舊的應答)等。

那么,在這里如果緩存的狀態為HINT,就說明命中了緩存,也就是調用了緩存文件。接下來,配置下nginx.conf文件,然后重新加載,刷新頁面即刻,具體如下:

A、配置文件nginx.conf

proxy_cache_path /nginx/cache/webpages levels=1:2 keys_zone=webpages:30mmax_size=2g;

    server {

        listen       80;

        server_name  localhost;

        charset utf-8;

        #add headers

        add_header X-Via$server_addr;

        add_header X-Cache$upstream_cache_status;

        location / {

            proxy_passhttp://webservers;

            proxy_set_headerX-Real-IP $remote_addr;

            proxy_cache webpages;

            proxy_cache_valid 20010m;

        }

    }

B、測試結果

如上圖中的Resonpse Headers部分,已經說明緩存已經調度了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM