Session Cache — Store & Retrieve

DEX455 - Metadata、Platform Cache、Knowledge 与 Files 完全指南

📄 第 307 页 🎬 视频课程

课程章节介绍

同学们,今天我们来讲一讲Salesforce平台缓存里的一个重要用法——,会话缓存,。别担心,我会用大白话把这几个要点拆解清楚。 先记住一个总则:会话缓存可以操作任何分区,但前提是你得用,完全限定键,,这个东西格式就是 ,“命名空间.分区.key”,。比如你有自己的命名空间 `myapp`,分区叫 `UserData`,键是 `profile`,那完全限定键就是 `myapp.UserData.profile`。但如果你操作的是默认分区,就可以省掉前缀,只写分区和键就行。 ,本地前缀,又是什么?它指的是当前组织的命名空间。比如你在自己开发的组织里,这个命名空间就是你自己设置的那个。如果不加命名空间,系统就会自动帮你加上本地前缀。 接下来看 `put()` 方法,它有几个重载版本,允许你传入更多控制参数: - ,TLR,,单位是秒,就是“生存时间”,控制这条缓存数据能活多久。 - ,可见性,,用 `Cache.Visibility` 枚举,可以选 `ALL`(所有用户可见)或 `NAMESPACE_ONLY`(仅同一命名空间可见)。 - ,不可变性,,如果要存的数据以后不再修改,可以标记为不可变,这样读取性能会更好。 对于操作单一分区的情况,我们推荐直接用 `Cache.SessionPartition`,它更简单 —— 你只要先拿到分区对象,然后存数据时就不用再写命名空间,直接给键和值就好。比如: ```apex Cache.SessionPartition part = Cache.Session.getPartition('local.UserData'); part.put('profile', myData, 3600, Cache.Visibility.ALL, false); ``` 看到没有,分区对象拿到之后,不用重复写 `local.UserData` 了。 接下来注意一个托管的坑:如果代码是安装在订阅者组织里的托管包,那么,本地后缀,(就是刚才说的“local”前缀)实际指的是,订阅者组织的命名空间,,而不是你包自己的命名空间。也就是说,即使代码在包里面,存取缓存时如果用了本地前缀,它访问的是客户组织的命名空间,这样不同客户的缓存就隔离开了。 最后一条硬性规定:,不允许在调用类不拥有的分区中执行 Put 调用,。什么意思呢?就是说一个类只能往自己有权操作的分区里放数据。如果你试图往别的命名空间或别的包创建的分区里写东西,系统会直接报错。这条是为了保护数据安全。 好,总结一下:会话缓存用全限定键可以通吃所有分区,但推荐单分区场景下用 `SessionPartition` 简化;`put` 可以控制生存时间、可见性和不可变性;小心托管包里的本地前缀指的是客户组织;还有,千万别往不属于你的分区里写数据。 这样讲是不是清晰多了?后面在开发中多用几次就熟练啦。

关键词

Apex Salesforce Developer Guide