nginx 緩存,大文件分片請求方法


實現的途徑:expire cache-control

更新緩存的機制

如何校驗本地緩存是否過期

expires cache-control(max-age)如果超期,說明失效

然后進行etag是否過期(是一串字符串)優先校驗 先用etag,如果沒有---last-modified

last-modified---具體的時間 過期時間時分秒----http request頭信息

配置語法 

 

 304---緩存和修改時間沒有更新,就提示 not modified

 

 如果客戶端(request-header)加入了請求頭 cache-control max-age=0 ,那么意味着每次請求都要到服務端校驗。通常用請求頭last-modified對比 服務端文件的修改時間,從而得出是否緩存更新;這樣做的好處是可以實時請求服務端的文件更新,壞處是不斷向服務端發起連接請求,沒利用上緩存

 

 86400秒=24小時 代理緩存,動態緩存都依賴response head的cache-control

  • nginx緩存類型

網站都盡可能減少對后端的訪問,從而把資源放到前端的nginx緩存中,

緩存放服務端---服務端緩存常見的是key-value,常見的是數據放在memocache,redis

代理中間件---代理緩存,  從服務端獲取到緩存到本地,放在nginx一端

客戶端緩存----放在瀏覽器上

nginx代理緩存的流程

配置語法

配置緩存過期周期

配置緩存維度:$scheme----緩存的協議;$proxy_host主機名;$request_url---url鏈接

測試場景:

主機啟動8001,8002,8003這三個端口

設置

上圖proxy_cache_path 參數下 定義了存放緩存的路徑,文件夾分級方式:2層文件夾,keys_zone是為緩存命名inactive=60m,意味着60分鍾內該緩存如果未被訪問將被淘汰掉

use_temp_path默認是關閉,如果開啟會出現和緩存文件夾 /opt/app/cache共存的局面;從而在緩存加載的過程中出現一些性能問題

其他配置信息:proxy_cache_valid 200 304 意味着狀態200,狀態304下返回的頭信息 超時時間是12小時

proxy_cache_valid_any 10m 除了狀態200 和 304 其他狀態下返回頭信息只保留10分鍾

proxy_next_upstream 遇到下列情況,換服務器服務:遇到狀態500,502,503 504;超時;提示錯誤

add_header添加請求信息頭 Nginx_cache

 把proxy_cache_調為off,就能訪問不同的服務端返回頁面了,如下圖

 

清理指定緩存的方法

如何讓頁面不緩存

針對特別頁面設置不緩存的代碼

一個很特別的刪除語句

大文件分片請求 slice 后面的size 就是分片文件大小

原理,先提交請求到后端,然后拿到請求的文件大小,然后根據slice size進行切片,形成一個個獨立的小文件,分別請求服務后端

優勢:每個子請求收到的數據都會形成一個獨立文件,一個請求斷了,其他的請求不受影響

缺點:一次請求會建立一個操作系統句柄,如果文件很大slice size很小就會造成很多個請求,造成建立多個連接和多個句柄


免責聲明!

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



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