3.缓存位置
浏览器
当HTTP响应允许进行缓存时,浏览器会将HTML,CSS,JAVAScript,图片等静态资源进行缓存。
ISP
网络服务提供商(ISP)是网络访问的第一跳,通过将数据缓存在ISP中能够大大提高用户的访问速度。
反向代理
反向代理位于服务器之前,请求与响应都要经过反向代理。通过将数据缓存在反向代理,在用户请求反向代理时就可以直接使用缓存进行响应。
本地缓存
使用Guava Cache将数据缓存在服务器本地内存中,服务器代码可以直接读取本地内存中的缓存,速度非常快。
分布式缓存
使用Redis,Memcache等分布式缓存将数据缓存在分布式缓存系统中。
相对于本地缓存来说,分布式缓存单独部署,可以根据需求分配硬件资源。不仅如此,服务器集群都可以访问分布式缓存,而本地缓存需要在服务器集群之间进行同步,实现难度和性能开销上都非常大。
数据库缓存
MySQL等数据库管理系统具有自己的查询缓存机制来提高查询效率。
Java内部的缓存
java为了优化空间,提高字符串,基本数据类型包装类的创建效率,设计了字符串常量池及Byte,Short,Charater,Integer,Long,Boolean这六种包装类缓冲池。
CPU多级缓存
cpu为了解决运算速度与主存I/O速度不匹配的问题,引入了多级缓冲机制,同时使用MESI等缓存一致性协议来解决CPU缓存数据一致性的问题。