目录:

缓存 Cache

分享本文:

Share Buttons
文章目录

什么是缓存(Cache)?

缓存是指将访问频率高、获取成本高的数据复制一份,临时存放读写速度更快的介质中,后续再次请求相同数据时,优先读取缓存,以此提升响应速度、降低系统开销。

就像家里买了 5L 的花生油,可以先倒 500ml 到小油壶里,平时炒菜从小油壶里倒油,效率更高。

缓存的特性

缓存是基于原始数据的副本,是为了提高访问效率而存在的。为了最大程度地提高访问效率,在访问路径的多个环节都有缓存,这些缓存都是临时的,且更新可能存在延时。在需要的时候,我们可以清理所有缓存,这不会影响到原始数据,而且缓存机制会基于原始数据生成新的缓存。

对比维度原始数据 (Source Data)缓存 (Cache)
本质与角色数据的唯一权威来源原始数据的临时副本
访问效率慢。要层层处理后才能返回结果快,可直接返回结果
存储位置单一,源服务器或指定位置多样,遍布访问路径的各环节
生命周期持久化存储,不删除永远存在临时存储,过期或被清理后失效
数据时效性始终最新,反映当前的真实状态可能滞后,且各节点不统一

缓存数据的特性

访问频率高

在 WordPress 外贸网站中,访问频率最高的是各种 HTML 页面,包括网站首页、产品页、文章页等。而请求数量最多的,则是图片、视频、CSS/JS代码、字体等各种静态资源。

获取成本高

每次生成、传输页面都要产生多重成本消耗:

  • 生成成本:页面渲染需要占用服务器 CPU、内存、磁盘 IO 资源。
  • 带宽成本:完整 HTML、页面内静态资源传输,都会占用服务器出口带宽。
  • 距离成本:用户与源服务器距离远,原生直连传输的延迟高。

缓存的生产成本

就像访客会在设备上安装浏览器(如Chrome)以便访问网页,服务器上也会安装 Web 服务(如 Nginx)以便接收访问请求、返回页面数据。

请求抵达源服务器时, Web 服务会直接从固态硬盘中调用图片、代码等静态资源,而 HTML 页面的获取,则涉及多个环节。

HTML页面的获取流程

  1. Web 服务先读取固态硬盘,有完整的 HTML 页面直接调用,没有则让 WordPress 程序生成。
  2. WordPress 程序先调用对象缓存,没有缓存的,查询数据库,查询结果存入对象缓存。
  3. WordPress 程序收集足够多的对象缓存,制作出完整的 HTML 页面,交由 Web 服务发送。
  4. WordPress 插件把制作好的完整 HTML 页面,缓存到固态硬盘,方便下次调用。
类型作用当前主流选择
Web 服务接收请求、分发任务、返回页面Nginx、Apache、LiteSpeed
建站程序读取数据,渲染成 HTML 页面WordPress(PHP)
对象缓存程序缓存数据库查询出来的小块结构化数据Redis、Memcached
数据库储存原始数据,接收数据查询指令并返回内容MySQL、MariaDB
WordPress插件将Wordpress渲染的HTML页面存入固态硬盘LiteSpeed Cache

更多缓存

在Wordpress速度优化中,关于服务器端的缓存,我们最常听到的是

  • Page Cache(页面缓存)。就是上面提到的完整的 HTML 页面,储存在固态硬盘中。
  • Object Cache(对象缓存)。把数据库查询结果放入内存并备份到固态硬盘,需要时直接调用。

其实,源服务器上还有很多自动生效的缓存,由于不需要我们手动设置,存在感较低,比如:

  • 现代 Web 服务缓存。可以生成完整的 HTML 页面;可以把静态文件放入内存。
  • Opcode 缓存(PHP 代码缓存)。把 PHP 脚本编译后的操作码缓存至内存,减少重复编译。
  • 数据库查询缓存。MySQL、MariaDB自带简易缓存机制,会缓存重复 SQL 查询语句与对应结果。
  • 操作系统底层硬件缓存。会把固态硬盘中被频繁读取的内容预加载到内存。

各类硬件读写速度

在网站的源服务器上,缓存按硬件读写速度分层:热点数据放在内存中,方便随时调用;完整数据放在固态硬盘中,保证数据长期稳定保存。

硬件速度级别成本容量稳定性
CPU(处理器)纳秒级,比内存快10倍极高KB~MB断电丢失
RAM(内存)纳秒级,比NVMe SSD快100倍GB级断电丢失
NVMe SSD(固态硬盘)微秒级,比SSD快10倍TB级断电不丢
SSD(固态硬盘)毫秒级,1~10msTB级断电不丢
  • 1 毫秒 = 1,000 微秒 = 1,000,000 纳秒

分享本文:

Share Buttons