一、什么是web缓存
Web缓存:Web资源(如html页面,图片,js,数据等)存在于Web服务器和客户端(浏览器)之间的副本。缓存会根据进来的请求保存输出内容的副本;当下一个请求来到的时候,如果是相同的URL,缓存会根据缓存机制决定是直接使用副本响应访问请求,还是向源服务器再次发送请求。比较常见的就是浏览器会缓存访问过网站的网页,当再次访问这个URL地址的时候,如果网页没有更新,就不会再次下载网页,而是直接使用本地缓存的网页。只有当网站明确标识资源已经更新,浏览器才会再次下载网页。
二、web缓存的作用
减少网络带宽消耗(当Web缓存副本被使用时,只会产生极小的网络流量,可以有效的降低运营成本。)
降低服务器压力(给网络资源设定有效期之后,用户可以重复使用本地的缓存,减少对源服务器的请求,间接降低服务器的压力。同时,搜索引擎的爬虫机器人也能根据过期机制降低爬取的频率,也能有效降低服务器的压力。)
减少网络延迟,加开页面打开速度。
三、web缓存的类型
1、 数据库数据缓存
为了降低数据库查询性能压力,将查询后的数据放到内存中进行缓存,下次查询时,直接从内存缓存直接返回,提供响应效率。比如常用的缓存方案有memcached等。
2、 服务器端缓存:(代理和反向代理缓存)
1》 代理服务器缓存
代理服务器: 浏览器和源服务器之间的中间服务器,浏览器先向这个中间服务器发起Web请求,经过处理后(比如权限验证,缓存匹配等),再将请求转发到源服务器。代理服务器缓存的运作原理跟浏览器的运作原理差不多,只是规模更大。可以把它理解为一个共享缓存,不只为一个用户服务,一般为大量用户提供服务,因此在减少相应时间和带宽使用方面很有效,同一个副本会被重用多次。常见代理服务器缓存解决方案有Squid等,这里不再详述。
》 反向代理缓存:CDN
CDN缓存,也叫网关缓存。CDN缓存一般是由网站管理员自己部署,为了让他们的网站更容易扩展并获得更好的性能。浏览器先向CDN网关发起Web请求,网关服务器后面对应着一台或多台负载均衡源服务器,会根据它们的负载请求,动态将请求转发到合适的源服务器上。虽然这种架构负载均衡源服务器之间的缓存没法共享,但却拥有更好的处扩展性。从浏览器角度来看,整个CDN就是一个源服务器。
3、 浏览器端缓存
浏览器缓存: 浏览器端保存数据用于快速读取或避免重复资源请求的优化机制,整体上加速网页展示给用户。
6种浏览器端缓存机制:
1》浏览器缓存机制
2》Dom Storgage(Web Storage)存储机制
3》Web SQL Database 存储机制
4》Application Cache(AppCache)机制
5》Indexed Database (IndexedDB)
6》File System API
4、 Web应用层缓存
应用层缓存: 在代码层面通过代码逻辑和缓存策略,实现对数据、页面、图片等资源的缓存,可以将数据存在文件系统或内存中,减少数据库查询或者读写瓶颈,提高响应效率。
参考资料:
- 浏览器缓存原理
- Web缓存机制系列
- Web 前端实现本地存储
——End——