文档

支持

Remote Config

Remote Config

RCR - 缓存机制

Understand caching for Remote Config Runtime.
阅读时间2 分钟最后更新于 1 个月前

Remote Config Runtime 使用缓存机制,其工作方式如下:
  • RCR 从磁盘上的缓存文件读取上次保存的配置,如果成功,则应用该配置
  • 如果应用程序是首次连接而没有缓存文件,RCR 将为每种变量类型应用默认值(整型为 0,字符串为 "" 等等)
  • RCR 发出请求,如果请求成功,则会覆盖之前应用的缓存配置
  • 上次接收的配置也会覆盖缓存文件中的值
  • 此机制适用于除控制台以外的所有平台,因为针对控制台写入磁盘需要特殊的平台权限

缓存文件位置

缓存文件的位置为
Application.persistentDataPath/{YourApp}/RemoteConfigCache.json
,该位置因平台而异,如 persistentDataPath 文件中所述。
例如,对于 Mac,该缓存文件位于以下路径:/Users/[您的姓名]/Library/Application Support/DefaultCompany/{您的应用程序}/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" } }}

缓存场景

在缓存机制中,我们维护两个值,即
requestOrigin
status
,并且可以使用这两个值来了解缓存场景。
这两个值可以通过
configResponse
变量进行访问。以下是如何在回调中利用 requestOrigin 的示例:
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; }}
requestOrigin 的可能值包括:
{0:Default, 1:Cached, 2:Remote}
状态的可能值包括:
{0:None, 1:Failed, 2:Success, 3:Pending}
根据这些值,我们能够识别以下缓存场景:
  1. 如果用户之前从未连接过并且当前也没有连接,则应该应用默认值。
  2. 如果用户之前从未连接,但当前存在连接,则应该应用远程值并写入本地磁盘上的缓存中
  3. 如果用户之前至少连接过一次,但当前没有连接,则应该应用缓存的值
  4. 如果用户之前至少连接过一次,并且当前存在连接,则应该应用远程值(因为它们会覆盖缓存的值)
下面的表格中列出了这些场景:

场景

之前是否连接过

当前是否具有连接

缓存文件

来源

状态

1DefaultFailed
2RemoteSuccess
3CachedFailed
4RemoteSuccess