但願某請求被緩存,加一個響應頭javascript
response.setHeader('Cache-Control','max-age=300000000')
max-age=300000000表示300000000s內再次執行,直接從緩存中讀取內容,不請求,下載時間爲0,不會從新下載css
注意:html
1.首頁不要設置緩存,特別是htmljava
2.一般max-age設置的時間比較長,如有升級或改變,修改URL便可,能夠加一個查詢參數,如./style.css?v=2算法
response.setHeader('Expires','Mon, 12 Aug 2019 06:11:29 GMT')
設置時間爲某時刻,表示一旦過了該時刻,將會要從新下載。npm
問題:若用戶本地時間錯亂,緩存將可能會當即失效。緩存
問:Cache-Control與Expires的區別?app
1.Cache-Control是設置時間長度,Expires是設置時間點,推薦使用Cache-Control,由於若客戶本地時間一旦錯亂,Expires設置緩存可能會受到影響,可能會當即失效。ide
2.若兩個都設置了,會優先使用Cache-Control,由於Cache-Control是新版API。ui
var md5 = require('md5') if(path === './main.js'){ let string = fs.readFileSync('./main.js','utf-8') response.setHeader('Content-Type','application/javascript;charset=utf-8') let fileMd5 = md5(string) response.setHeader('ETag',fileMd5) if(request.headers['if-none-match'] === fileMd5){ response.statusCode = 304 //沒有響應體 }else{ response.write(string) //有響應體 } }
問:Cache-Control與ETag的區別?
若是用Cache-Control,是直接不請求,ETag會產生請求(Md5相同的狀況下),可是不下載,有響應頭,可是響應體是空的。推薦使用Cache-Control。