최대한의 유연성을 제공하기 위해 Firebase Remote Config은 웹 애플리케이션의 클라이언트 측 SDK 통합과 서버 측 SDK 통합을 모두 지원합니다. 즉, 앱에서 다음과 같은 작업을 할 수 있습니다.
- 서버에서 Remote Config 템플릿 가져오기 및 평가: 서버에서 Remote Config 템플릿을 다운로드하고 타겟팅 조건을 직접 평가할 수 있습니다.
- 초기 페이지 로드 성능 최적화: 서버 측 렌더링 시나리오의 경우 서버는 초기 페이지 로드 중에 평가된 구성을 클라이언트에 제공할 수 있습니다. 이렇게 하면 필요한 구성 데이터를 미리 전송하여 성능이 개선됩니다.
이 접근 방식을 사용하면 특히 서버 측 렌더링 설정에서 앱의 동작과 구성을 동적으로 관리할 수 있습니다.
앱의 서버 측 렌더링 설정
웹 앱에서 Remote Config을 사용하여 서버 측 렌더링을 구성하려면 다음 단계에 따라 클라이언트 및 서버 앱을 업데이트하세요.
1단계: 서버 측 애플리케이션 업데이트
Firebase Admin Node.js SDK를 구현한 서버 앱에서 기존 ServerConfig
를 허용하는 RemoteConfigFetchResponse
클래스를 포함합니다. 이를 사용하여 클라이언트로 전달할 수 있는 구성 값을 직렬화할 수 있습니다.
export default async function MyServerComponent() {
const serverApp = initializeApp();
const serverSideConfig = getRemoteConfig(serverApp);
const template = await serverSideConfig.getServerTemplate();
const config = template.evaluate({randomizationId: 'some-uuid'});
const fetchResponse = new RemoteConfigFetchResponse(serverApp, config);
return (
<div>
<MyClientComponent initialFetchResponse={fetchResponse}></MyClientComponent>
</div>
);
}
2단계: 클라이언트 앱 업데이트
Firebase JavaScript SDK를 구현하는 클라이언트 앱에 서버 앱에서 전달된 직렬화된 값을 수락하는 initialFetchResponse
구성 옵션을 포함합니다. 이렇게 하면 비동기 가져오기 요청을 실행하지 않고도 구성 상태를 수동으로 하이드레이션할 수 있습니다.
또한 클라이언트 SDK에서 firebase-server
를 templateId
로 설정할 수 있는 초기화 옵션을 포함해야 합니다. 이렇게 하면 SDK가 후속 가져오기에 초기 서버 측 템플릿을 사용하도록 구성되어 클라이언트와 서버 간에 일관된 파라미터와 조건부 값을 보장합니다.
export default function MyClientComponent({initialFetchResponse= ''} = {}) {
const app = initializeApp(firebaseConfig);
const config = getRemoteConfig(app, {
templateId: 'firebase-server',
initialFetchResponse
});
const paramValue = getString(config, 'my_rc_parameter_key');
return (
<div>{paramValue}</div>
);
}