Nginx 快取控制

2021-06-21 14:00:25 字數 1081 閱讀 5303

nginx 有好幾個引數控制快取,以nginx快取檔案作為例子。

第一,快取池

proxy_cache_path  /var/cache/nginx/proxy_cache levels=1:2 keys_zone=static:50m max_size=10g inactive=3d;

這個引數控制快取池的規模,以及與源伺服器的互動頻率。快取淘汰是非常被動的,僅僅是為了維護快取池的規模。

本例使用50m共享記憶體維護快取檔案列表,如果乙個檔案3天內不活躍,即沒被人二次訪問,則在快取池中淘汰掉,在硬碟上快取的檔案總量最高為10g 。如果快取池裡的檔案都是3天內的檔案,且總量已經達到10g,那麼此時快取池的淘汰規則是 lru --last recent used(訪問頻率最低的被淘汰)。

第二,快取的生命週期

proxy_cache_valid  200 302 3d;

這個引數直接控制快取的生命週期,

本例中,如果在3天內再次被訪問,則直接命中快取池,返回hit,

超過3天時間就主動跳過快取池,直接從源伺服器再取一遍,再跟快取池進行比較。

如果快取池裡有,則更新快取的時間戳,並返回expire,

如果快取池裡沒有,則重新生成快取,並返回miss,

這個值應該 <= 快取池的檔案失效時間才能提高命中率。

第三,瀏覽器快取的生命週期

expires 7d

這個引數控制瀏覽器儲存多久,分為幾個階段:

(不同的瀏覽器行為稍有不同,以chrome為例)

1、客戶使用瀏覽器第一次開啟網頁,伺服器返回200,進入瀏覽器快取,生命週期是7天

2、第二天,客戶用瀏覽器再次開啟網頁時,返回**依然是200,但是命中的是本地快取

3、客戶使用f5重新整理了瀏覽器,強制與伺服器發生通訊,在與伺服器比較後發現,檔案跟瀏覽器快取是一樣的,於是得到了304,如果不一樣,則是200 。

這三個引數,對於快取伺服器影響較大的是第一二個引數。

首先,我們應該維護乙個盡可能大的快取池,把麵做廣;

其次,我們要提高快取命中率,減少快取與源伺服器的互動頻率。

最後,如果是小範圍的快取,為了節省昂貴的磁碟io,我們可以選擇將快取放在共享記憶體中。

nginx 快取控制

nginx 有好幾個引數控制快取,以nginx快取檔案作為例子。第一,快取池 1 proxy cache path var cache nginx proxy cache levels 1 2 keys zone static 10m max size 10g inactive 2d 這個引數控制快...

Nginx的快取控制

加速使用者訪問,提公升單個使用者 瀏覽器訪問者 體驗,快取在本地 快取在nginx端,提公升所有訪問到nginx這一端的使用者體驗 提公升訪問上游 upstream 伺服器的速度 使用者訪問仍然產生請求流量 expires server 配置上游伺服器 集群 upstream tomcats pro...

瀏覽器快取控制 nginx的expires設定

對於 的,尤其是新聞站,一旦發布,改動的可能是非常小的.我們希望 能否在使用者訪問一次後,快取在使用者的瀏覽器端,且時間比較長的快取.可以,用到 nginx的expires設定 nginx中設定過期時間,非常簡單,在location或if段裡,來寫.time 預設單位 s expires 30s 快...