Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

จัดการพฤติกรรมแคช

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

Firebase Hosting ใช้ CDN ระดับโลกที่มีประสิทธิภาพเพื่อทำให้เว็บไซต์ของคุณเร็วที่สุด

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

อย่างไรก็ตาม เนื่องจากบริการ Cloud Functions และ Cloud Run สร้างเนื้อหาแบบไดนามิก เนื้อหาสำหรับ URL ที่กำหนดอาจแตกต่างกันไปตามสิ่งต่างๆ เช่น การป้อนข้อมูลของผู้ใช้หรือข้อมูลประจำตัวของผู้ใช้ เพื่ออธิบายสิ่งนี้ คำขอที่ได้รับการจัดการโดยรหัสส่วนหลังจะ ไม่ แคชใน CDN โดยค่าเริ่มต้น

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

คุณยังสามารถลดต้นทุนการดำเนินการของฟังก์ชันได้ เนื่องจากเนื้อหาถูกแสดงจาก CDN แทนที่จะใช้ฟังก์ชันที่ทริกเกอร์ อ่านเพิ่มเติมเกี่ยวกับการเพิ่มประสิทธิภาพการทำงานของฟังก์ชันและบริการในเอกสาร Cloud Functions และ Cloud Run

เรียนรู้เพิ่มเติมเกี่ยวกับพฤติกรรมการแคชใน เอกสารสำหรับนักพัฒนาเว็บ ของ Google

ตั้งค่าการควบคุมแคช

เครื่องมือหลักที่คุณใช้จัดการแคชสำหรับเนื้อหาแบบไดนามิกคือส่วนหัว Cache-Control ด้วยการกำหนดค่าส่วนหัวนี้ คุณสามารถสื่อสารกับทั้งเบราว์เซอร์และ CDN ว่าเนื้อหาของคุณจะถูกแคชได้นานแค่ไหน ในฟังก์ชันของคุณ คุณตั้งค่า Cache-Control ดังนี้:

res.set('Cache-Control', 'public, max-age=300, s-maxage=600');

ในส่วนหัวของตัวอย่างนี้ คำสั่งจะทำสามสิ่ง:

  • public — ทำเครื่องหมายแคชว่าเป็น public ซึ่งหมายความว่าทั้งเบราว์เซอร์ และ เซิร์ฟเวอร์ระดับกลาง (หมายถึง CDN สำหรับ Firebase Hosting) สามารถแคชเนื้อหาได้

  • max-age — บอกเบราว์เซอร์และ CDN ว่าสามารถแคชเนื้อหาได้กี่วินาที เมื่อหมดเวลาที่ตั้งไว้ เบราว์เซอร์และ CDN จะต้องตรวจสอบเนื้อหาอีกครั้งด้วยเซิร์ฟเวอร์ต้นทาง ในส่วนหัวของตัวอย่าง เราอนุญาตให้เบราว์เซอร์และ CDN แคชเนื้อหาเป็นเวลาห้านาที (ดู s-maxage ด้านล่างสำหรับการควบคุมเฉพาะสำหรับการแคช CDN)

  • s-maxage — แทนที่คำสั่ง max-age สำหรับการแคช CDN เท่านั้น บอก CDN ว่าสามารถแคชเนื้อหาได้กี่วินาที เมื่อหมดเวลาที่ตั้งไว้ CDN จะต้องตรวจสอบเนื้อหาอีกครั้งด้วยเซิร์ฟเวอร์ต้นทาง ในส่วนหัวของตัวอย่าง เรากำลังลบล้างการตั้งค่าสำหรับ max-age สำหรับ CDN เท่านั้น และอนุญาตให้ CDN แคชเนื้อหาเป็นเวลาสิบนาที

สำหรับ max-age และ s-maxage ให้ตั้งค่าเป็นระยะเวลานานที่สุดที่คุณพอใจกับผู้ใช้ที่ได้รับเนื้อหาเก่า หากหน้ามีการเปลี่ยนแปลงทุกๆ สองสามวินาที ให้ใช้ค่าเวลาเล็กน้อย อย่างไรก็ตาม เนื้อหาประเภทอื่นๆ สามารถแคชได้อย่างปลอดภัยเป็นเวลาหลายชั่วโมง วัน หรือเป็นเดือน

คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับส่วนหัว Cache-Control บน Mozilla Developer Network และใน เอกสารสำหรับนักพัฒนาเว็บ ของ Google

เนื้อหาแคชจะให้บริการเมื่อใด

เบราว์เซอร์และ CDN แคชเนื้อหาของคุณตาม:

  • ชื่อโฮสต์
  • เส้นทาง
  • สตริงข้อความค้นหา
  • เนื้อหาของส่วนหัวคำขอที่ระบุใน ส่วนหัว Vary

เปลี่ยนส่วนหัว

ส่วนหัว Vary กำหนดว่าควรใช้ส่วนหัวของคำขอใดเพื่อให้การตอบสนองที่เหมาะสม (ไม่ว่าเนื้อหาที่แคชจะถูกต้องหรือควรตรวจสอบเนื้อหาอีกครั้งกับเซิร์ฟเวอร์ต้นทางหรือไม่)

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

res.set('Vary', 'Accept-Encoding, X-My-Custom-Header');

ในกรณีนี้ ค่าของส่วนหัว Vary คือ:

vary: X-My-Custom-Header, x-fh-requested-host, accept-encoding, cookie, authorization

ด้วยการตั้งค่าเหล่านี้ คำขอที่เหมือนกันสองคำขอที่มีส่วนหัว X-My-Custom-Header ต่างกันจะถูกแคชแยกจากกัน โปรดทราบว่าโฮสติ้งจะเพิ่ม Cookie และ Authorization ในส่วนหัว Vary ตามค่าเริ่มต้นเมื่อมีการร้องขอเนื้อหาแบบไดนามิก เพื่อให้แน่ใจว่าส่วนหัวการให้สิทธิ์เซสชันหรือคุกกี้ที่คุณใช้เป็นส่วนหนึ่งของคีย์แคช ซึ่งป้องกันการรั่วไหลของเนื้อหาโดยไม่ได้ตั้งใจ

โปรดทราบด้วย:

  • แคชได้เฉพาะคำขอ GET และ HEAD คำขอ HTTPS ที่ใช้วิธีอื่นจะไม่ถูกแคช

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

การใช้คุกกี้

เมื่อใช้ Firebase Hosting ร่วมกับ Cloud Functions หรือ Cloud Run โดยทั่วไปแล้วคุกกี้จะถูกถอดออกจากคำขอที่เข้ามา นี่เป็นสิ่งจำเป็นเพื่อให้การ ทำงานของแคช CDN มีประสิทธิภาพ เฉพาะคุกกี้ __session ที่มีชื่อพิเศษเท่านั้นที่ได้รับอนุญาตให้ส่งผ่านไปยังการดำเนินการของแอปของคุณ

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