vlambda博客
学习文章列表

缓存策略:你需要了解的一切

随着前端需求的多样化和复杂化,大量使用支持库和样式表的Web应用程序的大小已经逐年增加。用户页面不仅加载大量资源,而且还加载大量数据,下载这些资源和数据既耗时又昂贵。正因为这些问题,Web和API缓存策略得以发挥巨大作用。

目录

  • 概述
  • 不同的缓存策略
  • 缓存的优点
  • 缓存过期的重要性
  • 极端缓存的缺点
  • 正确的缓存策略
  • 结论

1、概述

缓存是指在检索到资源或者数据后将其存储为缓存。存储后,浏览器/ API客户端即可从缓存中获取数据。这意味着服务器将不必重复处理或检索数据。因此,它可以减少服务器上的负载。
缓存似乎是一个简单的概念-存储数据并在需要时从缓存中检索数据。但是,实施时可能会变得复杂。缓存策略应被深入理解并谨慎应用。在本文中,我们将尝试讲述你需要了解的所有有关缓存和各种缓存策略的信息

2、不同的缓存策略

我们已经了解了什么是缓存,让我们了解现有的各种缓存策略。每个要缓存的资源都需要具有与其关联的正确缓存策略,以确保它不会破坏应用程序的功能。在本文的接下来的内容中,我们将讨论不同的变体,并深入探讨它们。

浏览器级别/本地缓存

浏览器级缓存是指在用户级存储资源和API响应数据。与新加载相比,缓存让Web应用程序的加载速度大大提高。浏览器级缓存利用浏览器的本地数据存储和磁盘空间来存储资源。浏览器还会维护这些资源的索引以及它们的 期时间。 过期时间是到缓存有效期结束的持续时间。根据修改资源的频率,这些缓存到期时间可能会有所不同。


浏览器不仅可以缓存JS或CSS文件,还可以缓存图像,API响应数据和完整的网页,具体取决于你所访问的网站的配置策略。
好处
  • 浏览器级别的缓存只占用用户系统上的空间
  • 加载网页速度更快
  • 减少了对服务器的API调用,从而减少了服务器流量
缺点
  • 如果将过期时间配置太久,可能会因为加载了旧文件而非最新文件导致应用程序无法正常运行
  • 如果资源太大,客户端的磁盘空间可能会被大量消耗掉
  • 我们无法控制缓存

对象级缓存

网页模板已成为当前Web开发的常用方法。对象级缓存策略是在服务器端缓存预处理的页面以及数据。这有助于防止频繁的数据库操作以及页面处理调用。对象基本上可以是任何资源,数据或网页。

好处
  • 所有用户的通用缓存有助于确保正确的内容交付
  • 缓存过期由服务器控制
  • 也会导致数据库调用的优化
缺点
  • 占用服务器磁盘空间
  • 如果用多个服务器负载均衡,则需要共享磁盘或缓存副本

网络级缓存

网络级缓存是一种现代的缓存方法,其中将中间HTTP Web服务器的API调用和路由器资源配置为缓存。在这种缓存方法中,我们将网络层配置为保存相应URL的响应和资源。这种类型的缓存严格基于URL。可以将网络层配置为根据应用程序的需要使用或忽略URL的查询参数。

网络层缓存通过完全避免响应请求而提高了整体性能。因此,与对象级缓存相比,它可以提供更好的性能。在某些设置中,用户将进入更靠近其位置的区域网络层。由于可以节省往返服务器的时间,因此可以大大缩短响应时间。
好处
  • 通用缓存,与服务器无关,可提供更准确的呈现
  • 减少由于网络层缓存而对应用程序服务器造成的打击
  • 区域网络层设置中的响应时间更快
缺点
  • 需要具有足够磁盘空间的持久网络层来容纳缓存
  • 网络层的流量和带宽需求增加

使用缓存存储的第三方缓存

这是目前使用的最佳缓存方法。第三方缓存涉及通过第三方缓存提供程序路由资源密集型调用。然后,这些缓存提供程序负责根据需要进行保存,管理和清理缓存。此外,缓存存储还可以更好地了解当前缓存的内容,并允许你在需要时清除缓存。
使用第三方缓存,你还可以确保在世界各地提供相同的缓存,而与国家或地区无关。因此,它们还通过将数据级联到更靠近用户的位置来提高网站性能。
好处
  • 缓存的完全责任由第三方处理
  • 使你可以完全控制缓存,同时确保在世界范围内复制所有更改
  • 减少Web应用程序服务器上的点击
  • 耐用的高速缓存服务器可提高网站性能
缺点
  • 与之前讨论的缓存策略相比,成本更高

3、缓存的优点

从上面的内容,我们了解到缓存对于大多数Web应用程序来说确实是必须的。以下是实现缓存的一些高级优点:
  • 降低Web应用程序服务器上的点击量或负载
  • 更好的网站性能和加载时间
  • 通过优化性能,提高了SEO排名
  • 通过基于浏览器的缓存减少了数据交换,从而优化了互联网数据的使用
  • 通过API缓存,可以更快地执行动作
为了从每种缓存机制中获得正确的收益,我们需要深入了解与之相关的概念。这些概念将在下一节中进一步讨论。

4、缓存过期的重要性

高速缓存是处理过的文件的存储区,将来会使用到。这些文件可能在整个生命周期中都不相同。在某些情况下,文件可能会更改。在这种情况下,缓存过期时间很重要。
缓存过期时间是缓存被视为有效的截止时间。当文件请求发送到服务器时,服务器将返回相关标头,以指定相应文件的到期时间。缓存引擎(浏览器,第三方或网络层)会为每个文件保留此到期时间,并负责按时刷新它。因此,过期的缓存问题将不复存在。在分析不同缓存策略的影响时,重要的是要确保有一个选项用于配置自定义缓存过期时间。

5、极端缓存的缺点

缓存虽然有益,但仍需要谨慎使用。你需要了解要缓存的重要文件。同时,你还需要仔细确定缓存的到期时间。极端缓存是指Web应用程序服务器以高到期时间缓存每个可能的文件的情况。
极端缓存可能最终导致Web应用程序性能下降。API调用中过时JS或CSS文件或数据也可能导致意外行为。因此,重要的是要仔细地缓存资源,并在每次进行更新时同时刷新缓存。下一节将帮助你仔细规划每种资源的缓存。

6、正确的缓存策略

针对缓存API调用缓存静态资源需要两种不同的缓存策略。每种策略都专注于缓存不同类型的数据。在制定策略之前,你需要将资源和API调用分为以下类别:
  • 静态资源:很少更改的JS,CSS,字体文件和图像
  • 主数据API调用:提供不经常更改数据的API调用
  • 其他资源和API调用:这些文件和API包含动态内容,几乎每次都需要重新检索
资源和API调用的分离将有助于最终确定每种资源所遵循的缓存策略。然后,尝试将静态资源组织到一个单独的文件夹中以区别对待它们。现在,让我们来尝试了解每种资源应遵循的缓存策略。

静态资源

静态资源的生命周期通常很长。这些资源通常包括从第三方引入的库和文件。例如,这包括Bootstrap,JQuery,Font ,Image等等。这些文件应被缓存更长的时间,有效期从1个月到3个月不等。大多数人都喜欢使用第三方CDN来托管这些库。但是,不建议这样做。
缓存静态资源将大大减少对服务器的资源调用。可以使用Web浏览器缓存来缓存这些文件。浏览器可以保存和管理这些文件。因此,当你输入Web应用程序URL时,浏览器会检查该网页发出的所有请求,查找可用的缓存,并从磁盘缓存中读取文件。
静态资源的缓存可以将浏览器缓存和第三方缓存结合在一起,以获得最佳的Web应用程序性能。

主数据API调用

API调用缓存是在过去几年中完成的很好的设计。但是,缓存API调用仍然是一件棘手的事情,使用成熟的平台来缓存此类API调用效果会更好。
你可以为各种实体(如帖子,推荐,服务列表等)缓存API调用。API调用缓存可加快API的响应时间。否则,如果数据太大,则可能需要1-2秒,甚至更长的时间。
通过全局缓存,可以在服务器减少负载的情况下,快速为API调用响应数据。因此,它可以为你的客户带来更好的性能和体验。

其他资源和API调用

刷新频率更高,并且可能需要显示实时的数据。因此,此类资源的一般建议是确保不会在用户或服务器级别上缓存它。动态数据的任何缓存都可能影响可视化或服务使用数据的完整性。

7、结论

从上面的讨论,我们可以总结出,对于每个Web应用程序开发者来说,缓存无疑是必须做的工作。通过缓存,你能获得很多好处,进而带来令人满意的用户体验。但是,选择正确的缓存策略是一项至关重要的工作,并且必须具备相关的知识。有了正确的策略和资源,一定可以使你的Web应用程序更快,体验更好。