http1.0 使用强制缓存
- expires 强制缓存,单位是毫秒,如果客户端跟服务端时间不一致的情况下,会出现bug,前台无法感知
res.setHeader("Expires", new Date(Date.now() + 10 * 1000).toUTCString())
http1.1 使用强制缓存与协商缓存
res.setHeader("Cache-Control", "no-cache")
res.setHeader("last-modified", new Date().toUTCString())
if (new Date(req.headers['if-modified-since']).getTime() + 3000 > Date.now()) {
res.statusCode = 304
res.end()
return
}
```
* Etag 协商缓存 以文件的最终修改时间为准,前台无法感知
```javascript
res.setHeader("Cache-Control", "no-cache")
const crypto = require("crypto")
const hash = crypto.createHash("sha1").update(content).digest("hex");
res.setHeader("Etag", hash)
if (req.headers["if-none-match"] === hash) {
res.statusCode = 304
res.end()
return
}
```