بهترین شیوه‌ها برای کارایی واکشی پیکربندی از راه دور

Firebase Remote Config به شما امکان کنترل انعطاف‌پذیر بر رفتار و ظاهر برنامه‌تان را می‌دهد. این قابلیت‌ها مانند راه‌اندازی ویژگی‌ها و آزمایش A/B بین پلتفرمی را برای برنامه‌های شما فراهم می‌کند، همه اینها بدون نیاز به استقرار نسخه‌های جدید یا پیمایش به‌روزرسانی‌های متعدد فروشگاه برنامه.

چه در حال نمونه‌سازی اولیه باشید، چه در حال اجرای یک استارتاپ در حال رشد، یا مدیریت یک برنامه سازمانی در مقیاس بزرگ، مدیریت حجم واکشی شبکه شما کلید ارائه یک تجربه کاربری سریع و پاسخگو است. مدیریت پیکربندی کارآمد، تأخیر شروع سرد را کاهش می‌دهد، در مصرف داده‌های کلاینت و باتری صرفه‌جویی می‌کند و از سربار غیرضروری شبکه جلوگیری می‌کند. علاوه بر این، اگر پایگاه کاربری شما به سرعت گسترش یابد و در آینده باعث افزایش مصرف شود، ساده‌سازی یکپارچه‌سازی Remote Config شما به اطمینان از کارآمد ماندن مصرف شما کمک می‌کند.

شما می‌توانید با اصلاح نحوه و زمان دریافت پارامترها توسط برنامه‌ها و زمان فعال‌سازی آنها، ترافیک درخواست شبکه سمت کلاینت را به میزان قابل توجهی کاهش دهید.

به الگوی «دریافت برای جلسه بعدی» بروید

یک الگوی رایج که باید از آن اجتناب کرد، استفاده از فراخوانی fetchAndActivate است - که هم مقادیر جدید را از طریق شبکه دریافت می‌کند و هم آنها را فعال می‌کند - در هر بار اجرای برنامه همراه با یک دوره انقضای کوتاه حافظه پنهان برای مقادیر قبلاً دریافت شده (به عنوان مثال، ۱۵ دقیقه تا یک ساعت). مدل ذهنی پشت این رویکرد این است که هر بار که کاربر برنامه را باز می‌کند، همیشه آخرین مقادیر دریافت شده و اعمال شده را دارد. در حالی که مواقعی وجود دارد که به‌روزرسانی فوری ضروری است (به عنوان مثال، اجرای یک کمپین فروش روزانه یا تبلیغ بازی)، مهم است که آن هدف را با تأثیر بر عملکرد برنامه و میزان استفاده از fetch متعادل کنید.

این رویکرد هر بار که حافظه پنهان منقضی می‌شود، فراخوانی‌های شبکه جدیدی را اعمال می‌کند و حجم بالایی از واکشی را برای کاربرانی که برنامه را چندین بار در روز باز می‌کنند، ایجاد می‌کند.

در عوض، استفاده جداگانه از فراخوانی‌های fetch و activate با حداقل فاصله زمانی بالاتر برای دریافت، برای اتخاذ مدل "دریافت برای جلسه بعدی" را در نظر بگیرید. شما همچنان می‌توانید fetchAndActivate با حداقل فاصله زمانی بالاتر برای دریافت استفاده کنید، زیرا fetch فقط در صورتی درخواست شبکه را اجرا می‌کند که حافظه پنهان نامعتبر باشد، اما استفاده جداگانه از این دو فراخوانی به تثبیت الگو و تثبیت آن به عنوان یک روش استاندارد در فرآیند توسعه برنامه شما کمک می‌کند. علاوه بر این، با فعال‌سازی جداگانه، خطر اعمال مقادیر پیکربندی در اواسط جلسه و ایجاد اختلال در تجربه کاربر را نخواهید داشت.

نحوه عملکرد این رویکرد

  • فعال‌سازی بلافاصله پس از اجرا: پیکربندی‌های ذخیره‌شده از جلسه قبلی را فوراً اعمال کنید (تاخیر شبکه ۰ میلی‌ثانیه).
  • واکشی در پس‌زمینه با حافظه پنهان طولانی‌تر (برای مثال، بیش از ۱۲ یا ۲۴ ساعت): درخواست پیکربندی‌های به‌روزرسانی‌شده به‌صورت غیرهمزمان برای به‌روزرسانی حافظه پنهان محلی برای جلسه بعدی .

چگونه این حجم واکشی را بهینه می‌کند

هرچه حداقل فاصله زمانی واکشی طولانی‌تر باشد، درخواست‌های واکشی کمتری ایجاد می‌شود. واکشی مقادیر جدید برای جلسه بعدی و فعال کردن مقادیر ذخیره شده برای جلسه فعلی به این معنی است که برنامه شما فوراً از حافظه پنهان محلی در یک دوره اعتبارسنجی طولانی‌تر بارگیری می‌شود و منجر به تجربه کاربری بهتری می‌شود.

برای مثال، اگر minimumFetchInterval روی ۲۴ ساعت تنظیم کنید و کاربری برنامه شما را ۵ یا ۱۰ بار در یک روز باز کند، SDK به طور خودکار راه‌اندازی‌های ۲ تا ۱۰ را مستقیماً از حافظه پنهان محلی انجام می‌دهد - و تعداد درخواست‌های روزانه شبکه آن کاربر را از ۱۰ یا بیشتر واکشی به ۱ کاهش می‌دهد.

مثال‌های زیر نشان می‌دهند که این پیاده‌سازی برای اندروید، پلتفرم‌های اپل و برنامه‌های وب چگونه به نظر می‌رسد:

اندروید

val remoteConfig = Firebase.remoteConfig

// Set a 24-hour minimum fetch interval (86,400 seconds)
val configSettings = remoteConfigSettings {
    minimumFetchIntervalInSeconds = 86400
}
remoteConfig.setConfigSettingsAsync(configSettings)

// 1. Instantly activate values cached from the LAST session
remoteConfig.activate().addOnCompleteListener {
    applyAppConfigurations()
}

// 2. Fetch new values in the background for the NEXT session
remoteConfig.fetch().addOnCompleteListener { task ->
    if (task.isSuccessful) {
        // Optional: Activate values if needed
    }
}

آی‌او‌اس+

let remoteConfig = RemoteConfig.remoteConfig()

// Set a 24-hour minimum fetch interval (86,400 seconds)
let settings = RemoteConfigSettings()
settings.minimumFetchInterval = 86400
remoteConfig.configSettings = settings

// 1. Instantly activate values cached from the LAST session
remoteConfig.activate { changed, error in
    guard error == nil else { return }
    DispatchQueue.main.async {
        self.applyAppConfigurations()
    }
}

// 2. Fetch new values in the background for the NEXT session
remoteConfig.fetch { status, error in
    if status == .success {
        // Optional: Activate values if needed
    }
}

وب

import { getRemoteConfig, fetchConfig, activate } from "firebase/remote-config";

const remoteConfig = getRemoteConfig(app);

// Set a 24-hour minimum fetch interval (86,400,000 ms)
remoteConfig.settings.minimumFetchIntervalMillis = 86400000;

// 1. Instantly activate values cached from the LAST session
activate(remoteConfig).then(() => {
    applyAppConfigurations();
});

// 2. Fetch new values in the background for the NEXT session
fetchConfig(remoteConfig).then(() => {
    // Optional: Activate values if needed
});

پیاده‌سازی واکشی شرطی «هوشمند»

اگر الگوی «واکشی برای جلسه بعدی» باعث تأخیر زیاد بین زمانی که نیاز به به‌روزرسانی مقادیر Remote Config دارید و زمانی که آنها در برنامه‌های کلاینت شما در دسترس قرار می‌گیرند، می‌شود، واکشی «هوشمند» شرطی را در نظر بگیرید.

برای پیاده‌سازی مؤثر این مورد، از اتصال محرک‌های fetch به قلاب‌های چرخه عمر رابط کاربری گسترده، مانند هر بار که صفحه بارگذاری می‌شود، یک تب تغییر می‌کند یا یک نما فوکوس را به دست می‌آورد، خودداری کنید.

در عوض، درخواست‌های واکشی را به صورت انتخابی و بر اساس اقدامات یا حالت‌های صریح برنامه، مانند موارد زیر، فعال کنید:

  • رویدادهای ورود کاربر
  • انتقال به جریان‌های کاربری خاص که در آن‌ها از پارامترهای شما استفاده می‌شود (مثلاً ورود به قیف پرداخت یا ارتقاء سطح در یک بازی)

برعکس، از ایجاد درخواست‌های واکشی برای اقدامات روتین مانند موارد زیر خودداری کنید:

  • وقتی کاربر برنامه را باز می‌کند یا یک جلسه جدید را شروع می‌کند
  • وقتی برنامه بین حالت‌های پس‌زمینه و پیش‌زمینه تغییر می‌کند

مراحل بعدی