缓冲作用
减少网络延迟,加快页面打开速度
降低服务器压力
减少网络带宽消耗
游览器缓存
Expires
Expires:Fri, 28 Mar 2014 06:58:19 GMT
注意
- 是格林威治时 间(GMT),而不是本地时间
- 使用过期时间属性一定要确认你的Web服务器时间设置正确
游览器缓存
Cache-Control
Cache-Control:max-age=31536000
重要参数
- max-age=[秒] — 执行缓存被认为是最新的最长时间。
- no-cache — 强制每次请求直接发送给源服务器
注意
- Cache-Control比Expires可以控制的多一些
- Cache-Control的优先级比Expires高,Cache-Control会重写后者的规则
游览器缓存
connect的实现
var oneDay = 86400000;//单位毫秒
connect()
.use(connect.static(__dirname + '/public'))
connect()
.use(connect.static(__dirname + '/public', { maxAge: oneDay }))
实现方式
if (!res.getHeader('Cache-Control')) res.setHeader('Cache-Control', 'public, max-age=' + (this._maxage / 1000));
游览器缓存
304
Last-Modified/If-Modified-Since和
ETag/If-None-Match
Request Header:
If-Modified-Since:Fri, 08 Mar 2013 10:37:22 GMT
If-None-Match:-9zum9zhe17n2ds
Response Header:
Etag:-9zum9zhe17n2ds
Last-Modified:Fri, 08 Mar 2013 10:37:22 GMT
注意
- ETag/If-None-Match:依然向服务端发请求
- expire和cache-control不会再发
游览器缓存
步入html5时代
- Manifest
- Localstorage
- Sessionstorage
服务器缓存
内存
- 最基本的实现方案:var obj = {};
- 优化的模块:lru
优点
- 纯内存操作,读写系能高
- 可以支持任意该语言的数据结构(buffer)
- 部署简单(特别是开发时)
缺点
- 进程间,服务器间共享比较麻烦
- 维护起来比较麻烦(缓存过期;数据量大时又隐患,gc)
服务器缓存
缓存服务器
优点
- 帮助各个进程间共享缓存数据
- 支持大数据量(但redis的内存过大时,性能会直线下降)
- 维护相对方便
缺点
- 存储复杂架构时,需要序列化/反序列化
- 相比较纯内存的缓存,需要网络请求,性能相对会差
服务器缓存
服务器缓存的一些注意点
- 往往对key取hash值后再存
负载均衡,避免key中存在“非法字符”
- 序列化
buffer数据就存buffer,不要再做数据转化,提高性能
- 缓存时间
- 连接数,超时时间
- 缓存雪崩
- 缓存透传
- 数据一致性
- ......
/
#