כדי לספק גמישות מקסימלית, Firebase Remote Config תומך בשילובים של SDK בצד הלקוח ובצד השרת עבור אפליקציות אינטרנט. כלומר, האפליקציה יכולה:
- שליפה והערכה של תבניות Remote Config בשרת: השרת יכול להוריד את תבנית Remote Config ולהעריך את תנאי הטירגוט ישירות.
- אופטימיזציה של ביצועי הטעינה הראשונית של הדף: בתרחישים של עיבוד בצד השרת, השרת יכול לספק את ההגדרה המוערכת ללקוח במהלך הטעינה הראשונית של הדף. כך משפרים את הביצועים כי נתוני ההגדרה הדרושים מועברים מראש.
הגישה הזו מאפשרת לכם לנהל את ההתנהגות וההגדרה של האפליקציה באופן דינמי, במיוחד בהגדרות של עיבוד בצד השרת.
הגדרת רינדור בצד השרת באפליקציות
כדי להגדיר עיבוד בצד השרת באמצעות Remote Config באפליקציית האינטרנט, צריך לעדכן את אפליקציות הלקוח והשרת לפי השלבים הבאים.
שלב 1: עדכון האפליקציה בצד השרת
באפליקציית השרת, שבה הטמעתם את Firebase Admin Node.js SDK, צריך לכלול מחלקה RemoteConfigFetchResponse
שמקבלת את ServerConfig
הקיים. אפשר להשתמש בשיטה הזו כדי לבצע סריאליזציה של ערכי הגדרה שאפשר להעביר ללקוח.
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
כדי לקבל את הערכים שעברו סריאליזציה מאפליקציית השרת. כך מתבצעת הידרציה של מצב ההגדרה באופן ידני בלי לבצע בקשת אחזור אסינכרונית.
בנוסף, צריך לכלול אפשרות הפעלה שמאפשרת להגדיר את firebase-server
כtemplateId
ב-SDK של הלקוח. ההגדרה הזו מאפשרת ל-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>
);
}