缓存 (Cache) 是指把取得过一次的数据临时保存下来,等下次需要同样的数据时可以迅速取出的机制。这和把常用的教科书从书架里拿出来放在书桌上是同样的思路。比起每次都走到书架前去取,放在桌面上要快得多。
浏览器缓存是最贴近日常的一种缓存。第一次访问某个 Web 网站时,图片和 CSS 等文件会被保存到浏览器中。下次访问同一个网站时,由于可以重新利用已经保存的文件,页面显示就会变快。经常访问的网站从第二次起显示得更快,浏览器缓存是原因之一。
DNS 缓存同样重要。浏览器把域名 (例:google.com) 转换成 IP 地址时,会把查询过一次的结果保存到缓存里。下次访问同一个域名时,不必再向 DNS 服务器查询,直接从缓存中取得 IP 地址,因此连接会更快。
缓存都有「有效期」。DNS 由 TTL (Time To Live) 决定,Web 文件则由 Cache-Control 标头的 max-age 等设置决定缓存要保持多长时间。对于 Web 文件,过期的缓存并不会立即被丢弃,浏览器会向服务器确认内容是否有更新,如果没有变化就继续使用已保存的数据。
短链接与缓存的关系也不容忽视。浏览器一旦缓存了 301 重定向,从下次起就不再经过短链接服务的服务器,而是直接访问转发目标。这对用户来说速度更快,但对服务一侧而言,存在无法准确统计点击数的缺点。
有时网站的更新迟迟没有反映出来,原因就在缓存。遇到这种情况,可以用 Ctrl + F5 等快捷键 (因浏览器而异) 执行忽略缓存的重新加载。