强制缓存
强制缓存Expires是绝对时间,到期了再请求,否则返回缓存的内容
Http1 设置Expires,如果服务器和本地时间不一致会存在漏洞
http1.1 cache-control :max-age=5 五秒缓存
cache-control值:
max-age=5 过期时间
s-manage 代理服务缓存过期时间,只能是public时候
no-cache 协商缓存
no-store 不缓存
private 资源只能被浏览器缓存
public 资源既可以被代理服务器也可以被浏览器缓存
协商缓存
last-modified 时间戳判断
是否缓存用if-modified-since和last-modified是否相等进行判断
缺点: 只能精确到秒,资源更新过快,毫秒级无法捕捉 资源一但修改时间戳也算更新,即使内容没有更新
优化方案:ETag 使用文件内容识别 if-none-match
缺点:文件过大就会消耗性能
- 判断是否命中强缓存
status 200 和size:from cache
- Expires:到期时间 绝对时间,如果修改浏览器本地时间,容易导致错乱
- Cache-Control 相对时间,是以发送给服务器时间 Cache-Control:max-age=31536000 (31536000/24/60*60)天
- 判断是否是协商缓存 Last-Modify/if-Modify-Since
Last-Modify/if-Modify-Since:
Last-Modify:文件最后的修改时间,当浏览器再次请求的时候会在请求头里发送if-Modify-Since,
如果第二次请求if-Modify-Since和Last-Modify 时间相同,则命中缓存,
如果时间毫秒是无法识别的,精密度不够
Etag/If-None-Match
Etag:标识值,如果资源变换,
则Etag会变化,第一次会请求返回的Etag,
如果和第二次请求request中的If-None-Match标识不相同,则表示有更新
两次请求返回的Etag和请求的if-None-Match标识不同,则标识有更新
浏览器多个标签页(多页面、多个html的应用)通讯:
- localstorage 另外页签可以通过document的storage事件,
- 实现不同页签的通信,其中有event可以拿到参数domain、newvalue、oldValue、key 可以监听storage事件 cookie 从document中获取+setInterval
- websocket
- html5新特性 sharedworker js单线程 worker可实现单页面多线程 shareworker实现多页面多线程