当前位置:文档之家› Web开发中的缓存

Web开发中的缓存



注意
– –
Cache-Control比Expires可以控制的多一些 Cache-Control的优先级比Expires高,Cache-Control会重写后者的规则
游览器缓存 •
Last-Modified/If-Modified-Since和ETag/If-None-Match
1. Request Header: If-Modified-Since:Fri, 08 Mar 2013 10:37:22 GMT If-None-Match:-9zum9zhe17n2ds 2. Response Header: Etag:-9zum9zhe17n2ds Last-Modified:Fri, 08 Mar 2013 10:37:22 GMT
Web开发中的缓存
继风 jifeng.zjd@
大纲
• 绪论
• 游览器缓存
• 服务器缓存
• 交流
为什么需要使用缓存?
绪论 •
• •
减少网络延迟,加快页面打开速度 降低服务器压力 减少网络带宽消耗
游览器缓存 •

Expires
Expires:Fri, 28 Mar 2014 06:58:19 GMT
注意 – –
是格林威治时 间(GMT),而不是本地时间 使用过期时间属性一定要确认你的Web服务器时间设置正确数据合并
游览器缓存 •

Cache-Control
Cache-Control:x-age=[秒] — 执行缓存被认为是最新的最长时间。 no-cache — 强制每次请求直接发送给源服务器 must-revalidate — 告诉缓存必须遵循所有你给予副本的新鲜度

缺点 – 进程间,服务器间共享比较麻烦 –维护起来比较麻烦(缓存过期;数据量大时又隐患,gc)
服务器缓存 •

缓存服务器 – redis(mredis), memcache 优点
– 帮助各个进程间共享缓存数据 – 支持大数据量(但redis的内存过大时,性能会直线下降) – 维护相对方便

缺点
–存储复杂架构时,需要序列化/反序列化 –相比较纯内存的缓存,需要网络请求,性能相对会差
服务器缓存 •
服务器缓存的一些注意点 – 往往对key取hash值后再存
负载均衡,避免key中存在“非法字符”
– 序列化
buffer数据就存buffer,不要再做数据转化,提高性能
– 缓存时间 –连接数,超时时间 –缓存雪崩 –缓存透传 –数据一致性 – …..
Q&A

注意
– –
ETag/If-None-Match:依然向服务端发请求 expire和cache-control不会再发
游览器缓存 •
步入html5时代 – –
Manifest Localstorage
服务器缓存 • •
内存 – 最基本的实现方案:var obj = {}; – 优化的模块:lru 优点 – 纯内存操作,读写系能高 –可以支持任意该语言的数据结构(buffer) –部署简单(特别是开发时)
相关主题