web浏览器缓存
没有缓存的世界,每次请求都是严格意义上的新的请求,那么服务器端的压力可想而知,客户端的响应速度也是大打折扣,就是我们在写程序也知道需要缓存,把一些常用的数据缓存区来,避免每次都要重新读取,特别是前端在进行元素获取时,虽然链式调用让我们很舒服,但是如果每次都需要重新获取这个元素的话,最好还是使用变量缓存起来比较好。
设置缓存
目前比较常见的缓存机制包括以下几种[都是设置http header]:
- Expires
- Cache-Control
- Last-Modified/If-Modified-Since:Last-Modified/If-Modified-Since要配合Cache-Control使用。
- Etag/If-None-Match:Etag/If-None-Match也要配合Cache-Control使用
还有一些升级设置缓存内容:
- cookie
- localSatorage、sessionStorage
- Web SQL:已经废弃的部分,规范推荐使用类似的indexedDB
- indexedDB:【异步缓存】IndexedDB是一种低级API,用于客户端存储大量结构化数据(包括, 文件/ blobs)。该API使用索引来实现对该数据的高性能搜索。
- application cache: 已经不再支持,在新版本的firefox和chrome中,考虑使用service workers,而service workers使用 Cache Storage
- service worker + cache storage:CacheStorage 接口表示 Cache 对象的存储。它提供了一个 ServiceWorker 、其它类型worker或者 window 范围内可以访问到的所有命名cache的主目录