Redis学习之路(一)之缓存知识体系
转自:https://www.unixhot.com/page/cache
缓存分层 |
缓存分级 |
内容 |
内容简介/主要技术关键词 |
用户层 |
DNS | 浏览器DNS缓存 | Firefox默认60秒,HTML5的新特性:DNS Prefetching |
应用程序DNS缓存 | Java(JVM)、PHP语言本身的DNS缓存 | ||
操作系统DNS缓存 | 客户端操作系统DNS缓存 | ||
DNS缓存服务器 | 专用的DNS缓存服务器、LocalDNS缓存 | ||
浏览器 | 浏览器缓存 | HMTL5新特性:Link Prefetching | |
基于最后修改时间的HTTP缓存协商: Last-Modified | |||
基于打标签的HTTP缓存协商: Etag | |||
基于过期时间的HTTP缓存协商: Expires、cache-control | |||
代理层 |
CDN | 反向代理缓存 | 基于Nginx+(Squid、Varnish、ATS)等,一般有多级 |
Web层 |
解释器 | Opcache | 操作码缓存 |
Web服务器 | Web服务器缓存 | Apache(mod_cache)、Nginx(FastCGI缓存、Proxy cache) | |
应用层 |
应用服务 | 动态内容缓存 | 缓存动态输出 |
页面静态化 | 动态页面静态化,需要专门用于静态化的CMS | ||
Local Cache | 应用本地缓存,PHP(Yac、Xcache) Java(ehcache) | ||
数据层 |
分布式缓存 | 分布式缓存 | Memcache、Redis等 |
数据库 | MySQL | MySQL自身缓存、innodb缓存、MYISAM缓存 | |
系统层 |
操作系统 | CPU Cache | L1(数据缓存、指令缓存) L2、L3 |
内存Cache | 内存高速缓存、Page Cache | ||
物理层 |
Raid卡 | Raid Cache | 磁盘阵列缓存(Raid卡可以控制是否使用磁盘高速缓存) |
磁盘 | Disk Cache | 磁盘高速缓存 |
一、用户层缓存
1、查看谷歌浏览器DNS缓存信息方法
查看谷歌浏览器DNS缓存信息方法:chrome://net-internals/#dns
,如图谷歌浏览器中缓存了自身访问的网站DNS缓存解析记录,在下一次进行访问时,不需要再进行域名解析,可以直接请求服务器IP地址,当然前提是在DNS的缓存时间没有失效。
2、DNS预获取
DNS预获取是属于前端优化的一种手段,dns-prefetch
可以提升页面的载入速度。一般来说,在前端优化中与DNS有关的有2点:一个是减少DNS的请求次数,另一个就是进行DNS预获取。
什么是 DNS Prefetch ?
DNS Prefetch 是一种DNS 预解析技术,当你浏览网页时,浏览器会在加载网页时对网页中的域名进行解析缓存,这样在你单击当前网页中的连接时就无需进行DNS的解析,减少用户等待时间,提高用户体验。
如果要浏览器端对特定的域名进行解析,可以再在页面中添加link标签实现。例如京东的页面就进行了DNS预获取:
Don't forget the beginner's mind