nginx開啟緩存機(jī)制:
在/etc/nginx/sites-available/default文件加入如下代碼
表示 對(duì)圖片、js和css資源實(shí)現(xiàn)緩存,過期時(shí)間為60秒
location ~* \.(?:jpg|jpeg|png|gif|ico|css|js)$ {
root /data;
expires 60s;
add_header Cache-Control "public";
}
下圖表示成功開啟

緩存過期后都會(huì)往服務(wù)器獲取資源嗎?
如果緩存未過期,刷新頁(yè)面時(shí),資源會(huì)顯示200,size為from disk/from memory,表示在本地緩存獲取資源。

緩存過期后,瀏覽器會(huì)去詢問服務(wù)端,檢查資源是否被更新,如果沒更新,服務(wù)端會(huì)返回304,資源依然在讀取本地

這和cache-controller為no-cache一個(gè)意思,并不是說資源都由服務(wù)端返回,而是瀏覽器每次都先去詢問服務(wù)端,是否有新的資源。
真的有必要開啟緩存嗎?
在模擬10K網(wǎng)絡(luò)條件下,加載時(shí)間相差5秒,這五秒就是發(fā)送http請(qǐng)求的代價(jià),因此建議合理都設(shè)置緩存策略。
修改資源真的被更新到了嗎?
我們對(duì)app.js進(jìn)行修改,刷新瀏覽器,如下圖,會(huì)返回200,并加載了108K的新資源。其他沒有改動(dòng)的資源,返回304

如果在緩存有效期內(nèi),我修改app.js,會(huì)返回304,因?yàn)榫彺嫫趦?nèi),瀏覽器不去詢問服務(wù)端。

緩存期內(nèi)怎么強(qiáng)制更新js/css資源???
第一步:首先加入test.js腳本, 內(nèi)容為alert(1)

第二步:緩存有效期內(nèi)修改test.js內(nèi)容為alert(2),彈框內(nèi)容依然為數(shù)字1
解決方案:修改test.js文件名為test.v1.js并在index.html重新引入(因?yàn)槲覀兊膆tml文件沒有緩存,所以可以通過更新html的引用實(shí)現(xiàn)資源替換)