开始使用Platform Cache

学习目标

完成本单元后,您将能够:

  • 描述什么是平台缓存以及它的用途。
  • 列出两种类型的平台缓存并给出每种缓存的示例。
  • 描述分区以及如何使用它们。

什么是缓存?

缓存是临时存储。在计算机世界中,缓存是来自数据库的频繁访问数据的临时存储。这是一个类比。假设你是一只寻找坚果和橡子的花栗鼠。现在是5点,你准备好吃了。你打算使用存放在你脸颊上的坚果和橡子(缓存),还是你要回到森林里从树上收集更多(数据库)?如果您在脸颊上访问食物的临时缓存,您的晚餐会更接近,您可以更快地吃到它!此外,您可以更有效地实现目标。数据缓存具有类似的优点,但对于人而言,不是花栗鼠。

一种花栗鼠,脸颊上有坚果

什么是平台缓存?

Platform Cache是​​一个存储层,用于存储Salesforce会话和组织数据以供以后访问。使用Platform Cache时,您的应用程序可以更快地运行,因为它们将可重用数据存储在内存中。应用程序可以快速访问此数据; 他们不需要在后续事务中复制计算和对数据库的请求。简而言之,将Platform Cache视为云应用程序的RAM。

使用Platform Cache,您还可以分配缓存空间,以便某些应用程序或操作不会窃取其他人的容量。您使用分区来分配空间。我们稍后会进入分区。

在我们继续前进之前

让我们暂停一下,请求试用平台缓存。默认情况下,您的Developer org具有0 MB缓存容量。您可以请求10 MB的试用缓存。

要申请试用,请转到开发人员组织中的“设置”。在“ 快速查找”框中,输入cache,然后单击“ 平台缓存”。单击“ 请求试用容量”并等待电子邮件通知您平台缓存试用版处于活动状态。Salesforce立即批准试用请求,但您可能需要几分钟才能收到电子邮件。

请求“平台缓存”页面上的“试用容量”按钮

如果您没有缓存试用版,则仍可以执行缓存操作以了解如何使用缓存。但是,会绕过缓存存储,并且检索的值为空(缓存未命中)。

好的,既然您已经请求了Platform Cache试用版,那么让我们学习更多概念。

我什么时候可以使用平台缓存?

您可以在代码中使用平台缓存,几乎可以在任何地方反复访问相同的数据。使用缓存数据可以提高应用程序的性能,并且比重复执行SOQL查询,进行多个API调用或计算复杂计算更快。

要缓存的最佳数据是:

  • 在整个会话中重用,或在所有用户和请求中重用
  • 静态(不会快速变化)
  • 计算或检索费用昂贵

存储不经常更改的数据

使用缓存来存储不经常更改的静态数据或数据。该数据最初通过来自第三方的API调用或通过SOQL查询在本地检索。如果数据发生更改,请在不必始终高度准确的情况下缓存此数据。

此类静态数据的示例如下:

  • 公共交通时刻表
  • 公司班车时刻表
  • 所有用户都看到的标题页眉
  • 显示在应用的每个页面上的静态导航栏
  • 您希望在会话期间保留的用户购物车
  • 每日汇率快照(汇率在一天内波动)

存储从复杂计算中获得的数据

由复杂计算或长查询产生的值是缓存存储的良好候选者。此类数据的示例如下:

  • 过去一周的总销售额
  • 公司员工整体志愿服务时间总计
  • 最畅销的排名

有关使用Platform Cache的位置的线索,请检查您的代码。例如,您当前是否通过重载Visualforce视图状态来存储应用程序数据?这些存储的值都是Platform Cache的候选者。

并非每个用例都是Platform Cache用例。例如,经常更改且实时更改的数据(例如股票报价)不适合缓存。此外,请确保您熟悉Platform Cache限制。例如,如果您的数据由异步Apex访问,则无法将其存储在基于用户会话的缓存中。

按版本缓存分配

具有Enterprise Edition orgs及更高版本的客户可以使用Platform Cache。以下版本带有一些默认缓存空间,但通常情况下,添加更多缓存可提供更高的性能增强。

  • 企业版(默认为10 MB)
  • 无限版(默认为30 MB)
  • 性能版(默认为30 MB)

试用试用缓存

您可以为您的组织购买额外的缓存。要确定多少额外缓存对您的应用程序有益,您可以请求试用缓存并进行试用。此外,在购买缓存之前请求专业版的试用缓存。在Developer Edition组织中使用试用缓存来使用Platform Cache开发和测试您的应用程序。当您的请求获得批准后,您将获得30 MB的试用缓存空间(Developer Edition为10 MB)。如果您需要更多试用缓存空间,请联系Salesforce。

平台缓存的类型是什么?

平台缓存有两种类型:组织缓存和会话缓存。

组织缓存

组织缓存存储组织中任何人都可以使用的组织范围数据。可以跨会话,请求和组织用户和配置文件访问组织缓存。

例如,可以根据联系人的位置为联系人缓存和显示天气数据。或者可以缓存货币汇率的每日快照以便在应用中使用。

会话缓存

会话缓存存储单个用户的数据,并与该用户的会话相关联。会话的最长寿命为8小时。

例如,假设您的应用计算用户位置与用户希望在同一天访问的所有客户之间的距离。位置和计算的距离可以存储在会话高速缓存中。这样,如果用户想要再次获得该信息,则不需要重新计算距离。或者,您可能拥有一个应用程序,使用户可以自定义导航标签顺序,并在访问应用程序中的其他页面时重复使用该顺序。

使用缓存时性能提升了多少?

您可能想知道使用Platform Cache可以提高应用程序的性能。从缓存中检索数据比通过API调用快得多。将SOQL与缓存检索时间进行比较时,缓存也比SOQL查询快得多。

下图显示了通过API调用和缓存的数据检索时间(以毫秒为单位)。在通过缓存本地获取数据时,很容易注意到巨大的性能提升,尤其是在多个事务中检索数据时。在用于图表的示例中,缓存比API调用快数百倍。在此图中,缓存检索时间仅为几毫秒,但由于用于时间值的比例,因此几乎为零。请注意,此图表是一个示例测试,其他应用的实际数字可能会有所不同。对外部服务进行API调用比从缓存中获取数据(2)更慢(1)。

Graph将API调用的处理时间与缓存进行比较

下一个图表将SOQL与组织和会话缓存检索时间进行比较。如您所见,SOQL比缓存慢。在此示例中,缓存比SOQL快两倍或更多倍,以便在单个事务中进行数据检索。在多个事务中执行检索时,差异甚至更大。(请注意,此图表是一个示例,其他应用的实际数字可能会有所不同。)通过SOQL查询获取数据(1)比从组织和会话缓存中获取数据要慢(2)。

Graph将SOQL查询的处理时间与缓存进行比较

什么是缓存分区?

还记得我们之前提到过使用Platform Cache你可以使用分区分配空间吗?我们现在谈谈分区。分区允许您分配缓存空间以平衡跨应用程序的使用情况和性能。将数据缓存到指定的分区可确保缓存空间不会被其他应用程序或不太重要的数据覆盖。

在组织中使用缓存空间之前,必须创建分区以定义应用程序的容量。每个分区容量在组织缓存和会话缓存之间分解。会话和组织缓存分配可以是零,5 MB或更大,并且必须是整数。分区的最小大小(包括其组织和会话高速缓存分配)为5 MB。例如,假设您的组织总共有10 MB的缓存空间,并且您创建了一个总共5 MB的分区,其中5 MB用于会话缓存,0 MB用于org缓存。或者,您可以创建10 MB空间的分区,其中5 MB用于组织高速缓存,5 MB用于会话高速缓存。所有分区的总和(包括默认分区)等于Platform Cache总分配。

下图显示了缓存容量和分区分配的图表。在这个例子中,我们还没有使用缓存,正如0%缓存使用情况(1)所证明的那样,并且已经使用相等的分配创建了两个分区(2)。

缓存容量图表

默认分区

您可以将任何分区定义为默认分区,但只能有一个默认分区。默认分区使您可以使用简写语法在该分区上执行缓存操作。这意味着在添加键值对时,您不必使用命名空间和分区名称完全限定键名。例如,而不是呼叫Cache.Org.put(’namespace.partition.key’,0); 你可以打电话 Cache.Org.put(’key’,0);

在下一个单元中,您将在安装程序中创建一个分区,以便开始使用Platform Cache!