แนวทางปฏิบัติแนะนำเพื่อประสิทธิภาพในการดึงข้อมูลการกำหนดค่าระยะไกล

Firebase Remote Config ช่วยให้คุณควบคุมลักษณะการทำงาน และลักษณะที่ปรากฏของแอปได้อย่างยืดหยุ่น ซึ่งจะช่วยให้คุณใช้ความสามารถต่างๆ เช่น การเปิดตัวฟีเจอร์และการทดสอบ A/B แบบข้ามแพลตฟอร์มสำหรับแอปได้ โดยไม่ต้องติดตั้งใช้งานเวอร์ชันใหม่หรือ อัปเดต App Store หลายครั้ง

ไม่ว่าคุณจะกำลังสร้างต้นแบบ ดำเนินธุรกิจสตาร์ทอัพที่กำลังเติบโต หรือจัดการแอปพลิเคชันระดับองค์กรที่ปรับขนาดได้ การจัดการปริมาณการดึงข้อมูลจากเครือข่ายเป็นกุญแจสำคัญในการมอบประสบการณ์ของผู้ใช้ที่รวดเร็วและตอบสนองได้ดี การจัดการการกำหนดค่าที่มีประสิทธิภาพจะช่วยลดเวลาในการตอบสนองของการเริ่มระบบครั้งแรก ประหยัดการใช้งานแบตเตอรี่และข้อมูลของไคลเอ็นต์ และป้องกันค่าใช้จ่ายที่ไม่จำเป็นของเครือข่าย นอกจากนี้ หากฐานผู้ใช้ของคุณขยายตัวอย่างรวดเร็วและ ทำให้การใช้งานเพิ่มขึ้นในอนาคต การเพิ่มประสิทธิภาพRemote Configการผสานรวม จะช่วยให้การใช้งานของคุณมีประสิทธิภาพอยู่เสมอ

คุณลดการเข้าชมคำขอเครือข่ายฝั่งไคลเอ็นต์ได้อย่างมากด้วยการปรับแต่งวิธี และเวลาที่แอปดึงพารามิเตอร์ รวมถึงเวลาที่แอปเปิดใช้งานพารามิเตอร์

เปลี่ยนไปใช้รูปแบบ "ดึงข้อมูลสำหรับเซสชันถัดไป"

รูปแบบที่ควรหลีกเลี่ยงคือการใช้การเรียก fetchAndActivate ซึ่งทั้ง ดึงค่าใหม่ผ่านเครือข่ายและเปิดใช้งานค่าเหล่านั้นทุกครั้งที่เปิดแอป รวมกับระยะเวลาหมดอายุของแคชสั้นๆ สำหรับค่าที่ดึงมาก่อนหน้านี้ (เช่น 15 นาทีถึง 1 ชั่วโมง) แนวคิดเบื้องหลังแนวทางนี้คือ ทุกครั้งที่ผู้ใช้เปิดแอป ระบบจะดึงและใช้ค่าล่าสุดเสมอ แม้ว่าบางครั้งการอัปเดตทันทีอาจจำเป็น (เช่น การเรียกใช้แคมเปญลดราคาประจำวันหรือโปรโมตเกม) แต่สิ่งสำคัญคือ การรักษาสมดุลเป้าหมายดังกล่าวกับผลกระทบต่อประสิทธิภาพของแอปและการใช้งานการดึงข้อมูล

วิธีนี้จะบังคับให้มีการเรียกเครือข่ายใหม่ทุกครั้งที่แคชหมดอายุ ซึ่งจะสร้างปริมาณการดึงข้อมูลสูงสำหรับผู้ใช้ที่เปิดแอปหลายครั้งต่อวัน

แต่ให้ลองใช้การเรียก fetch และ activate แยกกันโดยมี ช่วงเวลาการดึงข้อมูลขั้นต่ำที่สูงขึ้นเพื่อใช้รูปแบบ "ดึงข้อมูลสำหรับเซสชันถัดไป" คุณยังคงใช้ fetchAndActivate ที่มีช่วงเวลาการดึงข้อมูลขั้นต่ำที่สูงขึ้นได้ เนื่องจาก fetch จะ ดำเนินการคำขอของเครือข่ายก็ต่อเมื่อแคชไม่ถูกต้อง แต่การใช้การเรียกทั้ง 2 รายการ แยกกันจะช่วยเสริมรูปแบบและกำหนดให้เป็นแนวทางปฏิบัติมาตรฐานใน กระบวนการพัฒนาแอปพลิเคชัน นอกจากนี้ การเปิดใช้งานแยกกันจะช่วยให้คุณไม่ต้องเสี่ยงต่อการใช้ค่าการกำหนดค่ากลางเซสชันและขัดขวางประสบการณ์ของผู้ใช้

วิธีการทำงานของแนวทางนี้

  • เปิดใช้งานทันทีเมื่อเปิดตัว: ใช้การกำหนดค่าที่แคชจากเซสชันก่อนหน้าทันที (ความล่าช้าของเครือข่าย 0 มิลลิวินาที)
  • ดึงข้อมูลในเบื้องหลังด้วยแคชที่นานขึ้น (เช่น นานกว่า 12 หรือ 24 ชั่วโมง): ขอการกำหนดค่าที่อัปเดตแบบไม่พร้อมกันเพื่อรีเฟรชแคชในเครื่องสำหรับเซสชันถัดไป

วิธีเพิ่มประสิทธิภาพระดับเสียงการดึงข้อมูล

ช่วงเวลาการดึงข้อมูลขั้นต่ำที่นานขึ้นจะส่งผลให้มีคำขอการดึงข้อมูลน้อยลง การดึงค่าใหม่สำหรับเซสชันถัดไปและการเปิดใช้งานค่าที่แคชไว้สำหรับเซสชันปัจจุบัน หมายความว่าแอปจะโหลดจากแคชในเครื่องได้ทันทีในช่วงระยะเวลาการตรวจสอบที่นานขึ้น ซึ่งจะส่งผลให้ผู้ใช้ได้รับประสบการณ์ที่ดีขึ้น

ตัวอย่างเช่น หากตั้งค่า minimumFetchInterval เป็น 24 ชั่วโมง และผู้ใช้เปิดแอปของคุณ 5 หรือ 10 ครั้งในวันเดียว SDK จะเปิดแอปครั้งที่ 2-10 โดยอัตโนมัติจากแคชในเครื่อง ซึ่งจะลดจำนวนคำขอเครือข่ายรายวันของผู้ใช้รายนั้นจาก 10 ครั้งขึ้นไปเหลือเพียง 1 ครั้ง

ตัวอย่างต่อไปนี้แสดงลักษณะการติดตั้งใช้งานนี้สำหรับ Android แพลตฟอร์ม Apple และเว็บแอป

Android

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
    }
}

iOS+

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ทริกเกอร์กับฮุกวงจร UI แบบกว้าง เช่น ทุกครั้งที่หน้าจอโหลด แท็บเปลี่ยน หรือมุมมอง ได้รับโฟกัส

แต่ให้ทริกเกอร์คำขอเรียกข้อมูลแบบเลือกตามการกระทำหรือสถานะของแอปที่ชัดเจน เช่น

  • เหตุการณ์การลงชื่อเข้าใช้ของผู้ใช้
  • เปลี่ยนไปใช้โฟลว์ของผู้ใช้ที่เฉพาะเจาะจงซึ่งมีการใช้พารามิเตอร์ (เช่น เข้าสู่ Funnel การชำระเงินหรือเลื่อนระดับในเกม)

ในทางกลับกัน ให้หลีกเลี่ยงการทริกเกอร์คำขอเรียกข้อมูลสำหรับการดำเนินการตามปกติ เช่น

  • เมื่อผู้ใช้เปิดแอปหรือเริ่มเซสชันใหม่
  • เมื่อแอปเปลี่ยนสถานะระหว่างพื้นหลังกับส่วนหน้า

ขั้นตอนถัดไป