Firebase Hosting ทำงานร่วมกับตัวเลือกการประมวลผลแบบ Serverless ซึ่งรวมถึง Cloud Functions for Firebase และ Cloud Run เมื่อใช้ Firebase Hosting กับ ตัวเลือกเหล่านี้ คุณจะโฮสต์ไมโครเซอร์วิสได้โดยกำหนดให้คำขอ HTTPS ทริกเกอร์ ฟังก์ชันและแอปที่อยู่ในคอนเทนเนอร์ให้ทำงานในสภาพแวดล้อมที่มีการจัดการและปลอดภัย
Cloud Functions for Firebase: คุณเขียนและติดตั้งใช้งาน ฟังก์ชัน ซึ่งเป็นโค้ดแบ็กเอนด์ที่ตอบสนองต่อทริกเกอร์ที่เฉพาะเจาะจง จากนั้นใช้ Firebase Hosting คุณสามารถกำหนดให้คำขอ HTTPS ทริกเกอร์ฟังก์ชัน ให้ทำงาน
Cloud Run: คุณเขียนและติดตั้งใช้งาน แอปพลิเคชันที่แพ็กเกจไว้ในอิมเมจคอนเทนเนอร์ จากนั้นใช้ Firebase Hosting คุณ สามารถกำหนดให้คำขอ HTTPS ทริกเกอร์แอปที่อยู่ในคอนเทนเนอร์ให้ทำงาน
Use Case
คุณจะใช้ตัวเลือกการประมวลผลแบบ Serverless กับ Firebase Hosting ได้อย่างไร
แสดงเนื้อหาแบบไดนามิก \- นอกเหนือจากการแสดงเนื้อหาแบบคงที่ใน เว็บไซต์ Hosting แล้ว คุณยังแสดงการตอบสนองที่สร้างขึ้นแบบไดนามิกจาก ฟังก์ชันหรือแอปที่อยู่ในคอนเทนเนอร์ซึ่งทำหน้าที่เป็นตรรกะฝั่งเซิร์ฟเวอร์ได้ด้วย
ตัวอย่างเช่น คุณสามารถชี้รูปแบบ URL (เช่น
/blog/<blog-post-id>) ไปยัง ฟังก์ชันที่ใช้พารามิเตอร์รหัสบล็อกโพสต์ของ URL เพื่อดึงเนื้อหา แบบไดนามิกจากฐานข้อมูลสร้าง REST API \- คุณสามารถสร้าง API ของไมโครเซอร์วิสโดยใช้ฟังก์ชัน
เช่น ฟังก์ชันสามารถจัดการฟังก์ชันการทำงานของการลงชื่อเข้าใช้สำหรับเว็บไซต์ ขณะที่เว็บไซต์โฮสต์อยู่ที่
/ระบบจะเปลี่ยนเส้นทางคำขอใดๆ ไปยัง/apiไปยัง API ของไมโครเซอร์วิส ดูตัวอย่างได้ที่ ตัวอย่างโอเพนซอร์สนี้แคชเนื้อหาแบบไดนามิก \- คุณสามารถ กำหนดค่าการแคชเนื้อหาแบบไดนามิกใน CDN ทั่วโลกได้
ตัวอย่างเช่น หากฟังก์ชันสร้างเนื้อหาใหม่เป็นระยะๆ เท่านั้น คุณสามารถเพิ่มความเร็วของแอปได้โดยการแคชเนื้อหาที่สร้างขึ้นเป็นระยะเวลาสั้นๆ อย่างน้อย นอกจากนี้ คุณยังอาจลดค่าใช้จ่ายในการดำเนินการได้เนื่องจากระบบจะแสดงเนื้อหาจาก CDN แทนที่จะผ่านฟังก์ชันหรือแอปที่อยู่ในคอนเทนเนอร์ที่ทริกเกอร์
แสดงผลล่วงหน้าสำหรับแอปหน้าเดียว \- คุณสามารถปรับปรุง SEO และเพิ่มประสิทธิภาพการแชร์ในโซเชียลเน็ตเวิร์กต่างๆ ได้โดยการสร้างแท็ก
metaแบบไดนามิก ดูข้อมูลเพิ่มเติมได้ใน วิดีโอนี้ หรือดู ตัวอย่างโอเพนซอร์สนี้
การเลือกตัวเลือกแบบ Serverless
แม้ว่าทั้ง Cloud Functions for Firebase และ Cloud Run จะทำงานร่วมกับ Firebase Hosting และมีสภาพแวดล้อมแบบ Serverless ที่มีการจัดการอย่างเต็มรูปแบบ ปรับขนาดอัตโนมัติ และปลอดภัย แต่คุณสามารถใช้ตัวเลือกทั้ง 2 นี้สำหรับ Use Case ที่แตกต่างกัน และระดับการกำหนดค่าที่ต้องการ
เมื่อใช้ตัวเลือกแบบ Serverless ตัวเลือกใดตัวเลือกหนึ่ง คุณควรวางตัวเลือกดังกล่าวไว้ในตำแหน่งเดียวกับเซิร์ฟเวอร์ สำหรับ Firebase Hosting โดยติดตั้งใช้งานในภูมิภาคใดภูมิภาคหนึ่งต่อไปนี้
us-west1us-central1us-east1europe-west1asia-east1
ตารางต่อไปนี้อธิบายข้อควรพิจารณาพื้นฐานบางประการสำหรับการใช้ Cloud Functions for Firebase เทียบกับ Cloud Run ดูรายการโควต้า ขีดจำกัด และเมตริกทั้งหมดได้ในเอกสารประกอบโดยละเอียดของแต่ละผลิตภัณฑ์ (Cloud Functions for Firebase หรือ Cloud Run)
| ข้อควรพิจารณา | Cloud Functions for Firebase | Cloud Run |
|---|---|---|
| ตั้งค่า | Firebase CLI รวมงานหลายอย่างไว้ในคำสั่งเดียว ตั้งแต่ การเริ่มต้นไปจนถึงการสร้างและการติดตั้งใช้งาน | คอนเทนเนอร์มีตัวเลือกที่ปรับแต่งได้มากขึ้น ดังนั้นงานการตั้งค่า การสร้าง และ การติดตั้งใช้งานจึงมีขั้นตอนที่แยกกัน |
| สภาพแวดล้อมรันไทม์ | ต้องใช้ Node.js แต่คุณสามารถระบุ เวอร์ชันของ Node.js ที่จะใช้ได้ | เมื่อ สร้างคอนเทนเนอร์ คุณจะระบุสภาพแวดล้อมรันไทม์ |
| การรองรับภาษาและเฟรมเวิร์ก | JavaScript และ TypeScript รองรับเฟรมเวิร์กเว็บ เช่น Express.js |
ทุกภาษาที่ Dockerfile รองรับ รวมถึง Go, Node.js, Python, Java และอื่นๆ รองรับเฟรมเวิร์กเว็บสำหรับแต่ละภาษา |
| ระยะหมดเวลาสำหรับคำขอ Hosting | 60 วินาที (ดูหมายเหตุด้านล่าง) | 60 วินาที (ดูหมายเหตุด้านล่าง) |
| การทำงานพร้อมกัน | 1 คำขอต่ออินสแตนซ์ฟังก์ชัน (ไม่มีการทำงานพร้อมกันต่ออินสแตนซ์) |
คำขอพร้อมกันสูงสุด 1,000 รายการต่ออินสแตนซ์คอนเทนเนอร์ |
| การเรียกเก็บเงิน | Cloud Functions การใช้งาน
มีโควต้าการใช้งานฟรี แต่ต้องมีบัญชี Cloud Billing account ดูคำถามที่พบบ่อยเกี่ยวกับ Firebase |
Cloud Run การใช้งาน +
Container Registry พื้นที่เก็บข้อมูล
มีโควต้าการใช้งานฟรี แต่ต้องมีบัญชี Cloud Billing account |