但愿某请求被缓存,加一个响应头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。