Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

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

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

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

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

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

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

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

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

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

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

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

  • public - Marks แคชเป็น 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 พัฒนาเครือข่าย และของ 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 คุกกี้หากแอปของคุณให้บริการเนื้อหาที่แตกต่างกันขึ้นอยู่กับการอนุมัติของผู้ใช้