黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 Nginx緩存內(nèi)容

Nginx緩存內(nèi)容

更新時(shí)間:2021-09-22 10:53:33 來源:動力節(jié)點(diǎn) 瀏覽1307次

緩存來自代理的Web和應(yīng)用程序服務(wù)器的靜態(tài)和動態(tài)內(nèi)容,以加快向客戶端的交付速度并減少服務(wù)器上的負(fù)載。

概述

啟用緩存后,NGINX Plus 將響應(yīng)保存在磁盤緩存中,并使用它們來響應(yīng)客戶端,而不必每次都代理對相同內(nèi)容的請求。

要了解有關(guān) NGINX Plus 緩存功能的更多信息,請按需觀看NGINX內(nèi)容緩存網(wǎng)絡(luò)研討會,并深入了解動態(tài)內(nèi)容緩存 、緩存清除和延遲緩存等功能。

啟用響應(yīng)緩存

要啟用緩存,請proxy_cache_path 在頂級http {}上下文中包含該指令。第一個(gè)強(qiáng)制參數(shù)是緩存內(nèi)容的本地文件系統(tǒng)路徑,強(qiáng)制keys_zone參數(shù)定義用于存儲有關(guān)緩存項(xiàng)的元數(shù)據(jù)的共享內(nèi)存區(qū)域的名稱和大小:

http {
    # ...
    proxy_cache_path /data/nginx/cache keys_zone=one:10m;
}

然后proxy_cache 在要緩存服務(wù)器響應(yīng)的上下文(協(xié)議類型、虛擬服務(wù)器或位置)中包含指令,指定由指令的keys_zone參數(shù)定義的區(qū)域名稱proxy_cache_path(在本例中為one):

http {
    # ...
    proxy_cache_path /data/nginx/cache keys_zone=one:10m;
    server {
        proxy_cache mycache;
        location / {
            proxy_pass http://localhost:8000;
        }
    }
}

請注意,該keys_zone參數(shù)定義的大小不限制緩存響應(yīng)數(shù)據(jù)的總量。緩存的響應(yīng)本身與文件系統(tǒng)上特定文件中的元數(shù)據(jù)副本一起存儲。要限制緩存響應(yīng)數(shù)據(jù)的數(shù)量,請將max_size參數(shù)包含在proxy_cache_path 指令中。(但請注意,緩存數(shù)據(jù)量可能會暫時(shí)超過此限制,如下一節(jié)所述。)

涉及緩存的 NGINX 進(jìn)程

有兩個(gè)額外的 NGINX 進(jìn)程參與緩存:

該高速緩存管理器周期性地起動,檢查高速緩存的狀態(tài)。如果緩存大小超過 指令的max_size參數(shù)設(shè)置的限制proxy_cache_path,緩存管理器將刪除最近最少訪問的數(shù)據(jù)。如前所述,在緩存管理器激活之間的時(shí)間內(nèi),緩存數(shù)據(jù)量可能會暫時(shí)超過限制。

該緩存加載器只運(yùn)行一次,NGINX開始之后。它將有關(guān)先前緩存數(shù)據(jù)的元數(shù)據(jù)加載到共享內(nèi)存區(qū)域。在啟動后的最初幾分鐘內(nèi),一次加載整個(gè)緩存可能會消耗足夠的資源來降低 NGINX 的性能。為避免這種情況,請通過在proxy_cache_path 指令中包含以下參數(shù)來配置緩存的迭代加載:

loader_threshold– 迭代的持續(xù)時(shí)間,以毫秒為單位(默認(rèn)情況下,200)

loader_files– 一次迭代期間加載的最大項(xiàng)目數(shù)(默認(rèn)為100)

loader_sleeps– 迭代之間的延遲,以毫秒為單位(默認(rèn)情況下,50)

在以下示例中,迭代持續(xù)300幾毫秒或直到200項(xiàng)目加載完畢:

proxy_cache_path /data/nginx/cache keys_zone=one:10m loader_threshold=300 loader_files=200;

指定要緩存的請求

默認(rèn)情況下,NGINX Plus 緩存第一次從代理服務(wù)器收到此類響應(yīng)時(shí),對使用 HTTPGET和HEAD方法發(fā)出的請求的所有響應(yīng)。作為請求的密鑰(標(biāo)識符),NGINX Plus 使用請求字符串。如果請求與緩存響應(yīng)具有相同的鍵,NGINX Plus 將緩存響應(yīng)發(fā)送到客戶端。您可以在不同的指令http {},server {}或location {}上下文來控制其響應(yīng)緩存。

要更改用于計(jì)算密鑰的請求特征,請包含以下proxy_cache_key 指令:

proxy_cache_key "$host$request_uri$cookie_user";

要定義在緩存響應(yīng)之前必須發(fā)出具有相同鍵的請求的最小次數(shù),請包含proxy_cache_min_uses 指令:

proxy_cache_min_uses 5;

要使用GETand以外的方法緩存對請求的響應(yīng)HEAD,請將它們與GET和HEAD作為proxy_cache_methods 指令的參數(shù)一起列出:

proxy_cache_methods GET HEAD POST;

限制或禁用緩存

默認(rèn)情況下,響應(yīng)會無限期地保留在緩存中。僅當(dāng)緩存超過最大配置大小時(shí)才會刪除它們,然后按自上次請求以來的時(shí)間長度排序。您可以設(shè)置多長時(shí)間緩存的響應(yīng)被認(rèn)為是有效的,甚至他們是否在所有使用,通過在指示http {},server {}或location {}上下文:

要限制具有特定狀態(tài)代碼的緩存響應(yīng)被視為有效的時(shí)間,請包含以下proxy_cache_valid 指令:

proxy_cache_valid 200 302 10m;
proxy_cache_valid 404      1m;

在本例中,帶有代碼200或的響應(yīng)302被認(rèn)為在 10 分鐘404內(nèi)有效,帶有代碼的響應(yīng)在 1 分鐘內(nèi)有效。要為具有所有狀態(tài)代碼的響應(yīng)定義有效時(shí)間,請指定any為第一個(gè)參數(shù):

proxy_cache_valid any 5m;

要定義 NGINX Plus 不向客戶端發(fā)送緩存響應(yīng)的條件,請包含該proxy_cache_bypass 指令。每個(gè)參數(shù)定義一個(gè)條件并由多個(gè)變量組成。如果至少有一個(gè)參數(shù)不為空且不等于“ 0”(零),NGINX Plus 不會在緩存中查找響應(yīng),而是立即將請求轉(zhuǎn)發(fā)到后端服務(wù)器。

proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment;

要定義 NGINX Plus 根本不緩存響應(yīng)的條件,請包含proxy_no_cache 指令,以與proxy_cache_bypass指令相同的方式定義參數(shù)。

proxy_no_cache $http_pragma $http_authorization;

從緩存中清除內(nèi)容

NGINX 可以從緩存中刪除過時(shí)的緩存文件。這對于刪除過時(shí)的緩存內(nèi)容以防止同時(shí)提供新舊版本的網(wǎng)頁是必要的。收到包含自定義 HTTP 標(biāo)頭或 HTTPPURGE方法的特殊“清除”請求時(shí),將清除緩存。

配置緩存清除

讓我們設(shè)置一個(gè)配置來識別使用 HTTPPURGE方法的請求并刪除匹配的 URL。

在http {}上下文中,創(chuàng)建一個(gè)$purge_method取決于變量的新變量,例如$request_method:

http {
    # ...
    map $request_method $purge_method {
        PURGE 1;
        default 0;
    }
}

在location {}配置緩存的塊中,包含proxy_cache_purge 指令以指定緩存清除請求的條件。在我們的示例中,它是$purge_method在上一步中配置的:

server {
    listen      80;
    server_name www.example.com;
    location / {
        proxy_pass  https://localhost:8002;
        proxy_cache mycache;
        proxy_cache_purge $purge_method;
    }
}

發(fā)送清除命令

當(dāng)proxy_cache_purge指令配置,你需要發(fā)送一個(gè)特殊的緩存清除請求清除緩存。您可以使用一系列工具發(fā)出清除請求,包括curl本示例中的命令:

$ curl -X PURGE -D – "https://www.example.com/*"
HTTP/1.1 204 No Content
Server: nginx/1.15.0
Date: Sat, 19 May 2018 16:33:04 GMT
Connection: keep-alive

在示例中,具有公共 URL 部分(由星號通配符指定)的資源被清除。但是,此類緩存條目不會完全從緩存中刪除:它們保留在磁盤上,直到它們因不活動(由 指令的inactive參數(shù)確定proxy_cache_path)或緩存清除器(使用purger 參數(shù) to啟用proxy_cache_path)或客戶端而被刪除嘗試訪問它們。

限制對清除命令的訪問

我們建議您限制允許發(fā)送緩存清除請求的 IP 地址數(shù)量:

geo $purge_allowed {
   default         0;  # deny from other
   10.0.0.1        1;  # allow from 10.0.0.1 address
   192.168.0.0/24  1;  # allow from 192.168.0.0/24
}
map $request_method $purge_method {
   PURGE   $purge_allowed;
   default 0;
}

在這個(gè)例子中,NGINX 檢查該P(yáng)URGE方法是否在請求中使用,如果是,則分析客戶端 IP 地址。如果 IP 地址被列入白名單,則$purge_method設(shè)置為$purge_allowed:1允許清除,并0拒絕它。

從緩存中完全刪除文件

要完全刪除與星號匹配的緩存文件,請激活一個(gè)特殊cache purger過程,該過程會永久迭代所有緩存條目并刪除與通配符鍵匹配的條目。 在上下文中包含指令的purger 參數(shù):proxy_cache_pathhttp {}

proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=mycache:10m purger=on;

緩存清除配置示例

http {
    # ...
    proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=mycache:10m purger=on;
    map $request_method $purge_method {
        PURGE 1;
        default 0;
    }
    server {
        listen      80;
        server_name www.example.com;
        location / {
            proxy_pass        https://localhost:8002;
            proxy_cache       mycache;
            proxy_cache_purge $purge_method;
        }
    }
    geo $purge_allowed {
       default         0;
       10.0.0.1        1;
       192.168.0.0/24  1;
    }
    map $request_method $purge_method {
       PURGE   $purge_allowed;
       default 0;
    }
}

字節(jié)范圍緩存

初始緩存填充操作有時(shí)需要相當(dāng)長的時(shí)間,尤其是對于大文件。例如,當(dāng)一個(gè)視頻文件開始下載以滿足部分文件的初始請求時(shí),后續(xù)請求必須等待整個(gè)文件下載并放入緩存中。

NGINX 可以緩存此類范圍請求,并使用Cache Slice 模塊逐漸填充緩存,該模塊將文件劃分為更小的“切片”。每個(gè)范圍請求選擇覆蓋所請求范圍的特定切片,如果該范圍仍未緩存,則將其放入緩存中。對這些切片的所有其他請求都從緩存中獲取數(shù)據(jù)。

要啟用字節(jié)范圍緩存:

確保 NGINX 是使用緩存切片 模塊編譯的。

使用slice 指令指定切片的大小:

location / {
    slice  1m;
}

選擇使切片下載速度更快的切片大小。如果大小太小,可能會導(dǎo)致內(nèi)存使用過多,處理請求時(shí)會打開大量文件描述符,而過大可能會導(dǎo)致延遲。

將$slice_range 變量包含到緩存鍵中:

proxy_cache_key $uri$is_args$args$slice_range;

使用206狀態(tài)代碼啟用響應(yīng)緩存:

proxy_cache_valid 200 206 1h;

通過$slice_range 在Range標(biāo)頭字段中設(shè)置變量來啟用范圍請求到代理服務(wù)器的傳遞:

proxy_set_header  Range $slice_range;

這是完整的配置:

location / {
    slice             1m;
    proxy_cache       cache;
    proxy_cache_key   $uri$is_args$args$slice_range;
    proxy_set_header  Range $slice_range;
    proxy_cache_valid 200 206 1h;
    proxy_pass        http://localhost:8000;
}

請注意,如果打開切片緩存,則不得更改初始文件。

組合配置示例

以下示例配置結(jié)合了上述一些緩存選項(xiàng)。

http {
    # ...
    proxy_cache_path /data/nginx/cache keys_zone=one:10m loader_threshold=300 
                     loader_files=200 max_size=200m;
    server {
        listen 8080;
        proxy_cache mycache;
        location / {
            proxy_pass http://backend1;
        }
        location /some/path {
            proxy_pass http://backend2;
            proxy_cache_valid any 1m;
            proxy_cache_min_uses 3;
            proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
        }
    }
}

在此示例中,兩個(gè)位置使用相同的緩存,但方式不同。

因?yàn)轫憫?yīng)backend1很少改變,所以不包含緩存控制指令。響應(yīng)在第一次發(fā)出請求時(shí)被緩存,并且無限期地保持有效。

相比之下,對請求服務(wù)的響應(yīng)backend2頻繁更改,因此它們僅在 1 分鐘內(nèi)有效,并且在發(fā)出 3 次相同請求之前不會被緩存。此外,如果請求與proxy_cache_bypass指令定義的條件匹配,NGINX Plus 會立即將請求傳遞給 ,backend2而無需在緩存中查找相應(yīng)的響應(yīng)。

動力節(jié)點(diǎn)Java在線學(xué)習(xí)中有更多關(guān)于Java的知識點(diǎn),針對沒有任何Java基礎(chǔ)的讀者學(xué)習(xí),讓你從入門到精通,主要介紹了一些Java基礎(chǔ)的核心知識,讓同學(xué)們更好更方便的學(xué)習(xí)和了解Java編程,感興趣的同學(xué)可以關(guān)注一下。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 日本a级片在线观看 | 99爱在线精品视频网站 | 玖玖玖精品视频免费播放 | 真人一级毛片免费完整视 | 亚洲免费精品视频 | 免费色视频在线观看 | 中文字幕日本久久2019 | yy4408女性午夜私人影院 | 丝袜脚在线 | 一级毛片一级毛片一级毛片aa | 精品国产v无码大片在线观看 | 成人在免费视频手机观看网站 | 在线你懂的 | 美女日批视频在线观看 | 国内一区二区三区精品视频 | 97国产在线视频 | 中文字幕在线导航 | 欧美日韩在线播一区二区三区 | 伊人久久亚洲综合天堂 | 日日操夜夜操天天操 | 国产一级在线观看 | 日韩性生活大片 | 精品视频免费播放 | 久久久久国产一级毛片高清片 | 日韩免费高清一级毛片在线 | 亚洲欧美国产精品专区久久 | 中文字幕一区二区三区5566 | 极品美女丝袜被的网站 | 手机看片日韩日韩国产在线看 | 日韩伦理一区二区三区 | 中文天堂在线最新2022更新 | 日韩在线一区二区 | 动漫精品成人免费网站 | 亚洲欧美日韩在线观看二区 | 综合激情区视频一区视频二区 | 婷婷在线网 | hdⅹvideos成人 | 快播制服丝袜 | 欧美性视频网站 | 中国人xxxxxxx免费看视频 | 久久这里只有精品免费看青草 |