RCR - 缓存机制
Understand caching for Remote Config Runtime.
阅读时间2 分钟最后更新于 1 个月前
Remote Config Runtime 使用缓存机制,其工作方式如下:
- RCR 从磁盘上的缓存文件读取上次保存的配置,如果成功,则应用该配置
- 如果应用程序是首次连接而没有缓存文件,RCR 将为每种变量类型应用默认值(整型为 0,字符串为 "" 等等)
- RCR 发出请求,如果请求成功,则会覆盖之前应用的缓存配置
- 上次接收的配置也会覆盖缓存文件中的值
- 此机制适用于除控制台以外的所有平台,因为针对控制台写入磁盘需要特殊的平台权限
缓存文件位置
缓存文件的位置为Application.persistentDataPath/{YourApp}/RemoteConfigCache.json{ "settings": { "requestOrigin": 2, "status": 2, "body": { "configs": { "settings": { "rotateY": 30.0, "rotSpeed": 44.0, "swordName": "Singing Sword", "rotateZ": 4.0, "jsonCubeCustom": { "rotateX": 20, "color": { "r": 0.2, "g": 0.2, "b": 0.3, "a": 1 } }, "swordPrice": 5, "testdateString": "2021-10-21T10:00:00.0000001-07:00", "rotateX": 777.0 } }, "metadata": { "assignmentId": "355faf1d-9ce0-4528-9267-95ffe07ed891", "environmentId": "11daa94d-0ffa-41e2-8579-f4acbbdb3987", "bundle": "657abf6ee46c9dc227581a7adba48bca89dfb620" } }, "headers": { "Date": "Mon, 15 Nov 2021 17:44:08 GMT", "Content-Type": "application/json;charset=utf-8", "Access-Control-Allow-Origin": "\*", "Content-Length": "429", "Server": "Jetty(9.4.z-SNAPSHOT)", "Via": "1.1 google", "Alt-Svc": "clear", "Connection": "keep-alive" } }}
缓存场景
在缓存机制中,我们维护两个值,即requestOriginstatusconfigResponserequestOrigin 的可能值包括:void ApplyRemoteSettings (ConfigResponse configResponse) { // Conditionally update settings, depending on the response's origin: switch (configResponse.requestOrigin) { case ConfigOrigin.Default: Debug.Log ("No settings loaded this session; using default values."); break; case ConfigOrigin.Cached: Debug.Log ("No settings loaded this session; using cached values from a previous session."); break; case ConfigOrigin.Remote: Debug.Log ("New settings loaded this session; update values accordingly."); break; }}
{0:Default, 1:Cached, 2:Remote}{0:None, 1:Failed, 2:Success, 3:Pending}- 如果用户之前从未连接过并且当前也没有连接,则应该应用默认值。
- 如果用户之前从未连接,但当前存在连接,则应该应用远程值并写入本地磁盘上的缓存中
- 如果用户之前至少连接过一次,但当前没有连接,则应该应用缓存的值
- 如果用户之前至少连接过一次,并且当前存在连接,则应该应用远程值(因为它们会覆盖缓存的值)
场景 | 之前是否连接过 | 当前是否具有连接 | 缓存文件 | 来源 | 状态 |
|---|---|---|---|---|---|
| 1 | 否 | 否 | 无 | Default | Failed |
| 2 | 否 | 是 | 是 | Remote | Success |
| 3 | 是 | 否 | 是 | Cached | Failed |
| 4 | 是 | 是 | 是 | Remote | Success |