Nginx作為靜態資源web服務之緩存原理


 Nginx作為靜態資源web服務之緩存原理


大致理一下http瀏覽器緩存原理:
瀏覽器第一次請求服務器,此時瀏覽器肯定沒有緩存,則直接調用服務器端,服務器在返回的信息的信息頭中添加 ETag和Last-Modified參數信息,返回給客戶端瀏覽器緩存。
然后瀏覽器以后的請求,先判斷是否有緩存,那么怎么判斷有緩存呢,有三步:
(1)是否過期  
(2)對ETag信息對比 ,ETag:  就是一個生成的字符串
(3)對Last-Modified信息對比;Last-Modified:服務端最后一次修改的時間。
如果沒有過期,則將信息直接返回回去,如果過期了,則將請求發送到服務端,此時request的頭信息中帶着ETag和Last-Modified信息,responose頭信息中也帶着這兩個參數,如果一致,則表示要訪問的資源沒有發生改變,直接返回304,如果不一致,則表明資源改變,會請求服務端,返回200。


下面通過配置 緩存過期時間來讓其實現緩存
配置語法:expires 【modified】time;
 expires epoch | max | off;
默認配置:expires off;
配置路徑:http、server、location、if in location

使用demo測試

1. 修改default.conf配置文件,添加如下配置,暫時不添加緩存配置

2. 重新加載nginx,輸入網址,看出客戶端和服務端狀態如下

由上圖可以看出,第一次請求是沒有緩存的,訪問服務器返回200,並且再返回的信息頭中返回了以上的兩個參數 ETag和Last-Modified。下面我們刷新,再來看看效果

3. 刷新網頁,查看狀態

由上圖看出,第二次請求,返回的狀態是304,在請求信息頭中有上圖兩個參數,與服務端返回的參數對比,發現是一致的,所以直接返回 304。下面我們配置緩存過期時間

4. 配置過期時間

5. 刷新網址,看看效果

由上圖看出,服務器端返回的參數中有了過期時間,以及expires參數數據,因此過期時間配置成功。


免責聲明!

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



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