การแคชรันไทม์ด้วย Workbox

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

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

การวางแผนกลยุทธ์

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

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

เน้นเครือข่ายเป็นหลัก

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

แผนภาพแสดงคำขอที่ส่งจากหน้าเว็บไปยังโปรแกรมทำงานของบริการและจากโปรแกรมทำงานของบริการไปยังเครือข่าย คำขอเครือข่ายล้มเหลว คำขอจึงไปยังแคช

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

แบบใช้แคชเป็นหลัก

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

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

แผนภาพแสดงคำขอจากหน้าไปยัง Service Worker และจาก Service Worker ไปยังแคช คำขอแคชล้มเหลว คำขอจึงไปยังเครือข่าย

ไม่มีอัปเดตขณะตรวจสอบความถูกต้องอีกครั้ง

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

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

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

ทำไมจึงควรใช้ Workbox

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

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

เนื้อหาใดที่ควรแคชและใช้กลยุทธ์ใด

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

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

ใช้เวอร์ชันที่ไม่มีการอัปเดตขณะตรวจสอบอีกครั้งเพื่อให้ความสำคัญกับความน่าเชื่อถือมากกว่าความใหม่

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

ใช้เครือข่ายเป็นอันดับแรกเพื่อให้ความสำคัญกับความใหม่มากกว่าความเสถียร

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

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

ใช้ Cache-first กับ URL ที่มีเวอร์ชัน

ในกลยุทธ์แบบให้ความสำคัญกับแคชเป็นอันดับแรก เมื่อรายการได้รับการแคชแล้ว รายการดังกล่าวจะไม่มีการอัปเดต สำหรับกรณีนี้ ตรวจสอบว่าคุณใช้ข้อมูลดังกล่าวเฉพาะกับเนื้อหาที่คุณทราบว่าจะไม่ เปลี่ยน โดยเฉพาะอย่างยิ่ง วิธีนี้ทำงานได้ดีที่สุดสำหรับ URL ที่มีการกำหนดเวอร์ชัน ซึ่งเป็น URL ประเภทเดียวกับที่ควรจะแสดงด้วย ส่วนหัวการตอบกลับ Cache-Control: max-age=31536000