實現的途徑: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很小就會造成很多個請求,造成建立多個連接和多個句柄