什么是缓存?
缓存是嵌入在应用程序或设备内存中的硬件或软件组件,可自动临时存储用户使用的数据,以减少下次访问应用程序或设备时的数据检索时间和工作量。
缓存是用于在计算机系统中临时存储信息(通常是数据)的软件或硬件。它是一种适度形式的快速、昂贵的内存,用于增强频繁或经常访问的数据的性能。缓存数据暂时保存在缓存用户专属的存储介质上,与主存储分开。中央处理器 (CPU)、应用程序、网络浏览器和操作系统都使用缓存。
使用缓存是因为大容量或主存储无法满足用户的需求。缓存可最大限度地减少数据访问时间、降低延迟并增强输入/输出 (I/O)。缓存方法增强了应用程序性能,因为实际上所有应用程序工作负载都依赖于 I/O 操作。
缓存存在于硬件和软件中。
处理来自台式机、笔记本电脑、智能手机或平板电脑上软件的数据的 CPU 也有自己的缓存。这个 CPU 缓存是一个紧凑的内存块,旨在帮助 CPU 检索经常访问的数据。它保存了设备的主内存用来更快地运行指令的信息,而不是只在需要时才加载每条数据的情况。
每个在线浏览器都保留自己的缓存,包括 Microsoft Edge、Google Chrome、Firefox 和 Safari。浏览器缓存保存显示浏览器访问的网页所需的文件。这包括定义网站的 HTML 文档、层叠样式表 (CSS)指南、Javascript、cookie 和图形。
例如,当您浏览亚马逊时,它会检索与您看到的产品页面相关的所有照片——HTML、创建网站所需的脚本文件,以及您的登录凭据和购物车内容等自定义数据。如果您删除浏览器的缓存,零售网站会要求您重新登录并重新配置您的首选项。
通常,应用程序还会保留自己的缓存。应用程序,如浏览器,存储他们认为必不可少的文档和信息,允许他们在必要时快速重新加载数据。照片、媒体预览、浏览历史以及其他用户偏好可能是各种应用程序缓存的数据类型。
缓存如何工作?
高速缓存中的数据通常存储在可立即访问的硬件中,例如 RAM(随机存取存储器),并且可以与软件组件结合使用。缓存的基本目标是通过消除与它后面较慢的存储层联系的需要来提高数据检索速度。
缓存通常临时存储一小部分数据以换取容量,这与数据存档相反,后者的数据通常是全面且持久的。
当缓存客户端尝试检索数据时,它首先检查缓存。如果数据位于缓存中,则称为缓存命中。提供缓存命中的尝试比例称为缓存命中率或比率。
不在缓存中的数据从主存中取出并放入缓存中。这称为高速缓存未命中。这是如何实现的,以及从缓存中删除哪些信息为新数据创建空间,由缓存算法、缓存机制和系统规则决定。
各种缓存策略控制缓存的操作。Write-around 规则绕过缓存以支持存储的写入操作。这可以防止高速缓存在大量写入 I/O 期间被淹没。这种技术的缺点是数据在从存储中读取之前不会被缓存。因此,由于尚未缓存数据,此读取操作速度较慢。
直写缓存策略将信息存储在缓存和存储中。直写式缓存的好处是新记录的数据总是被缓存,允许快速读取。然而,直到信息被同时写入高速缓存和主体存储,写操作才算完成。这可能会导致写入操作延迟。
回写缓存类似于直写缓存,因为所有写入都被路由到缓存。相反,回写式缓存认为写入过程在信息被缓存后完成。然后数据从缓存传输到存储系统。
现在,让我们了解硬件缓存的工作原理。
硬件像内存块一样执行缓存,用于临时存储可能再次需要的数据。CPU、SSD 和 HDD通常具有基于硬件的缓存,而浏览器和 Web 服务器通常依赖于基于软件的缓存。
缓存由条目集合组成。每个条目都包含相关信息,这些信息是备份存储中存储的确切数据的副本。每个条目还包括一个标签,用于标识备份存储中的材料,它是该材料的副本。标记使并发的面向缓存的算法能够在多个层上运行而不会受到差分中继干扰。
每当缓存客户端(CPU、浏览器或操作系统)想要访问预期驻留在底层存储中的数据时,它都会首先检查缓存。如果可以找到带有适合必要数据的标签的条目,则改用该条目的数据。这称为缓存命中。
例如,网络浏览器可能会检查其在光盘上的本地缓存,以查看其是否具有作为特定 URL 的网站资料的本地备份文件。在这种情况下,URL 地址就是标签,而网页的内容就是数据。缓存访问导致缓存命中的比例称为缓存的命中率或命中率。
缓存未命中是另一种情况,当检查缓存但未找到具有必要标记的项目时会发生这种情况。这需要从备份存储进行更昂贵的数据访问。下载所需数据后,通常将其存储在缓存中以备将来使用。
在高速缓存未命中时,擦除当前高速缓存记录以为新获得的数据创建空间。替换策略是指用于确定替换哪个条目的试探法。一种常见的替换策略,“最近最少使用 (LRU)”,将最早的条目替换为最近最少访问的条目。
高效的缓存算法根据缓存材料的数量以及缓存和备份存储的延迟和资源利用率来计算使用命中率。
缓存的重要性
许多软件工程师认为缓存是使事情变得更快的唯一方法。简单的说,当你想取回代价高昂的数据时,只要把它缓存起来,这样下次你查找它的时候,它就不会那么昂贵了。让我们理解为什么。
1. 更好的性能
缓存的主要优点是它提高了系统的性能。通过保存网站文件数据的缓存版本,您的浏览器只需下载一次内容,并可以在以后访问时重新加载文件。
2.离线访问
为了提高速度,应用程序缓存以前和经常使用的数据。如前所述,这不仅使事情运行得更快,而且在某些情况下,它还使应用程序能够“离线”运行。例如,如果您没有互联网连接,应用程序可能会使用缓存数据继续运行。
3. 应用效率
下载一次文件非常高效。文件的缓存版本可防止应用程序因两次访问而浪费时间、电池寿命以及其他资产。相反,应用程序只需要下载更新的或新添加的文件。
4.网络效率
缓存通过减少请求和传递信息所需的“行程”次数来促进更有效地使用网络带宽。这种影响可能会显着减少对基础设施重复部署的需求,从而为整个互联网生态系统带来可观的成本节约和经济优势。此外,商业缓存提供商可能会大规模运营,大量使用由多个客户共享的节能IT 基础设施。
5. 更好的服务质量 (QoS)
缓存服务的可用性降低了开发内容提供商(尤其是推出新服务的 SMB)的准入门槛,并使这些企业能够创建新颖的消费者服务。缓存使新兴和新的内容提供商能够在产品/服务发布时提供具有高质量服务 (QoS) 的积极用户体验,而无需进行昂贵的基础设施投资,从而使这些公司能够与老牌玩家竞争。