缓存存储文件的副本,以便在需要的地方更快地交付它们。
阅读本文后,您将能够:
复制文章链接
缓存是将文件的副本存储在缓存或临时存储位置中的过程,以便可以更快地访问它们。从技术上讲,缓存是文件或数据副本的任何临时存储位置,但通常该术语用于指代互联网技术。Web 浏览器缓存 HTML 文件、JavaScript 和图像,以便更快地加载网站;DNS 服务器则缓存 DNS 记录,以加快查找速度;而 CDN 服务器则缓存内容,以减少延迟。
要了解缓存的工作方式,可以想一下现实世界中食品和其他物资的储藏。当探险家罗尔德·阿蒙森在 1912 年从南极之旅返回时,他和手下依靠他们在沿途储藏的食物为生。这比旅途之中等待大本营运送物资要有效得多。Internet 上的缓存具有类似的用途;它们临时存储用户在网络上“旅行”所需的“物资”或内容。
每当用户加载一个网页时,他们的浏览器需要下载相当多的数据才能显示该网页。为了缩短网页加载时间,浏览器对出现在网页上的大部分内容进行缓存,将网页内容的副本保存在设备硬盘上。这样,当用户下次加载网页时,大部分内容已经存储在本地,网页的加载速度会更快。
浏览器存储这些文件,直到它们的生存时间 (TTL) 到期或硬盘缓存已满。(TTL 指内容应该被缓存多长时间。)如果需要,用户也可以清除他们的浏览器缓存。
一旦浏览器的缓存被清除,每一个加载的网页都会像用户第一次访问该网页一样加载。如果第一次加载的内容不正确但被缓存了,清除缓存可以让它正确加载。然而,清除浏览器缓存也会暂时减慢页面加载时间。
CDN(内容交付网络)将图像、视频或网页等内容缓存在比源站服务器更靠近最终用户的代理服务器中。(代理服务器是一种从客户端接收请求并将其传递给其他服务器的服务器。)由于这些服务器距离发出请求的用户较近,因此 CDN 能够更快地交付内容。
CDN 可以比作连锁杂货店:购物者不必前往可能数百英里远种植有粮食的农场,而是去当地的杂货店,尽管仍然需要走些路,但距离要近得多。由于杂货店储藏来自远方农场的食品,因此去杂货店购买只需花费几分钟而不是几天。同样,CDN 缓存可以“储藏”Internet 上显示的内容,让网页加载速度变得更快。
当用户向使用 CDN 的网站请求内容时,CDN 从源站服务器获取该内容,然后保存该内容的副本以便为将来的请求服务。只要有用户继续请求,缓存的内容就会保留在 CDN 缓存中。
缓存命中是指当客户端设备向缓存发出内容请求时缓存中正好保存有该内容。当缓冲中没有所请求的内容时,就会发生缓存未命中。
缓存命中意味着内容将能够更快地加载,因为 CDN 可以立即将其交付给最终用户。在缓存未命中的情况下,CDN 服务器会将请求传递给源服务器,然后在源服务器响应后缓存内容,以便后续请求时产生缓存命中。
CDN 缓存服务器位于全球各地的数据中心中。Cloudflare 的 CDN 服务器遍布全球330 个城市,以尽可能缩短与访问内容的最终用户的距离。CDN 服务器所在的位置也称为数据中心。
当网站用请求的内容响应 CDN 服务器时,它们也会附加内容的 TTL,让服务器知道要存储多长时间。TTL 存储在响应的 HTTP 标头中,它指定缓存内容的秒数、分钟数或小时数。当 TTL 到期时,缓存会删除内容。如果有一段时间没有请求内容,或者如果 CDN 客户手动清除某些内容,某些 CDN 也会提前从缓存中清除文件。
DNS 缓存在 DNS 服务器上进行。服务器将近期的 DNS 查找存储在其缓存中,因而无需查询名称服务器,便能立即使用域的 IP 地址进行回复。
搜索引擎可以缓存经常出现在搜索结果中的网页;这样,即使用户尝试访问的网站暂时关闭或无法响应,它们也能回答用户查询。
Cloudflare 提供的 CDN 拥有分散于世界各地的 330 个 PoP。Cloudflare 提供免费 CDN 缓存服务,而付费 CDN 客户还能够自定义其内容的缓存方式。使用的网络采用 Anycast;也就是说,同样的内容可以从这些数据中心中的任何一个进行交付。不论是伦敦用户还是悉尼用户,都可以查看从几英里外 CDN 服务器加载的相同内容。