web缓存:数据库缓存,服务器缓存,浏览器缓存;
浏览器缓存:indexDB localStorage(5M);sessiStorage(5M);Cookie(4K) HTTP缓存
HTTP缓存:强缓存(expries Cache-Contral) 协商缓存(Etag:if-none-match Last-Modifiy:if-Modify-Since)
浏览器第一次请求
浏览器再次请求:
为什么已经有了Last-Modifiy 还需要ETag ?
1. Last-Modified标注的最后修改只能精确到秒级,如果某些文件在1秒钟以内,被修改多次的话,它将不能准确标注文件的修改时间
2. 如果某些文件会被定期生成,当有时内容并没有任何变化,但Last-Modified却改变了,导致文件没法使用缓存
3.有可能存在服务器没有准确获取文件修改时间,或者与代理服务器时间不一致等情形