课程章节介绍
同学们,今天我们来讲讲 Salesforce 平台缓存。这个东西很有用,但也有一些坑,咱们得弄明白。
首先,平台缓存主要靠这么几个类来操作:缓存.会话、缓存.、缓存.SessionPartition 和缓存.OrgPartition。听起来有点绕,其实就是区分是跟着用户会话走,还是跟着整个组织走。
那怎么找到缓存里的东西呢?靠一个键,这个键的格式是“命名空间.分区.key”。比如你的应用在某个命名空间下,分区名字你自己起,最后是具体的 key。不过,如果你用的是默认分区,那前面的命名空间和分区这部分就可以省略掉。还有一个小提示,本地前置这个说法,指的就是当前组织自己的命名空间。
接下来是几个非常重要的注意事项,千万要记住:
第一,缓存里的数据没有持久化。也就是说,服务器重启或者出问题,数据就可能没了,没法保证一定不丢数据。
第二,数据是没加密的,所以别把密码、密钥这类敏感信息直接塞进去。
第三,并发写入的时候,它只管 key 这一层的冲突,谁最后写谁生效,但不会在整个事务上加锁。所以可能出现先后覆盖的情况。
第四,缓存未命中是常事儿,要么是数据过期了,要么是没存进去。所以你的代码必须能处理空值,或者你主动用 Cache Builder 模式来重新生成数据。
最后,在流程卸载元素里,或者计划作业之类的异步操作之后,千万别用会话缓存,因为那时候用户会话可能已经结束了,数据根本拿不到。
再说说限制,不同版本不一样:
企业版,缓存总共只有 10 MB;
无限版和性能版稍微宽裕点,有 30 MB。
单个 key 最长 50 个字符。
一个缓存项最大 100 KB。
按分区看,会话本地缓存每个分区最多 500 KB,组织本地缓存每个分区最多 1 MB。
这些数字心里要有个数,设计缓存方案的时候才不容易超限。
好,平台缓存的基本要点就是这些,大家如果有问题随时提。
关键词
Apex
Salesforce
Developer Guide