기술 자료

지원

Remote Config

Remote Config

RCR - 캐싱 메커니즘

Understand caching for Remote Config Runtime.
읽는 시간 1분최근 업데이트: 한 달 전

Remote Config 런타임에서는 다음과 같이 작동하는 캐싱 메커니즘을 사용합니다.
  • RCR이 디스크에 있는 캐시 파일에서 최근 저장된 구성을 성공적으로 읽으면 해당 구성이 적용됩니다.
  • 앱이 처음으로 연결되고 캐시 파일이 없으면 RCR은 각 변수 유형(int의 경우 0, 문자열의 경우 "" 등)에 기본값을 적용합니다.
  • PCR에서 성공적으로 요청을 생성하면 이전에 적용된 캐싱된 구성을 오버라이드합니다.
  • 최근 수신된 구성은 캐시 파일의 값도 오버라이드합니다.
  • 이 메커니즘은 모든 플랫폼에 적용되며, 콘솔용 디스크에 기록하려면 특별한 플랫폼 권한이 필요하므로 콘솔은 제외됩니다.

캐시 파일 위치

캐시 파일은
Application.persistentDataPath/{YourApp}/RemoteConfigCache.json
에 있으며 persistentDataPath docs에 명시된 대로 플랫폼에 따라 다릅니다.
예컨대 Mac의 경우 캐시 파일은 /Users/YourName/Library/Application Support/DefaultCompany/{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" } }}

캐싱 시나리오

캐싱 메커니즘 내에서
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. 사용자가 최소 한 번 이상 연결되었고 지금도 연결되어 있으면 캐싱된 값을 덮어쓰므로 원격 값이 적용됩니다.
해당 시나리오를 표에 정리하면 다음과 같습니다.

시나리오

과거 연결 여부

현재 연결 여부

CacheFile

출처

상태

1아니요아니요없음DefaultFailed
2아니요RemoteSuccess
3아니요CachedFailed
4RemoteSuccess