กลยุทธ์การแคชที่ขอบเครือข่ายสำหรับแอปรีแอ็กต์
ใช้ส่วนหัว Cache-Control, Cloudflare KV และ R2 เพื่อแคชหน้าที่แสดงผลแล้วและทรัพยากรแบบคงที่ที่ขอบเครือข่าย
กลยุทธ์การแคชที่ขอบเครือข่ายสำหรับแอปรีแอ็กต์ เป็นบทเรียน React Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน React Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน
ส่วนหัว Cache-Control สำหรับการแคชที่ขอบเครือข่าย
ส่วนหัวการตอบกลับ Cache-Control ควบคุมระยะเวลาที่ Cloudflare (และ CDN อื่น ๆ) จะแคชการตอบกลับ SSR ของคุณ คำสั่งสำคัญมีดังนี้: max-age (แคชของเบราว์เซอร์), s-maxage (ระยะเวลาของแคช CDN/แคชร่วม) และ stale-while-revalidate (แสดงเนื้อหาเก่าขณะที่ตรวจสอบความใหม่ในเบื้องหลัง)
s-maxage เทียบกับ max-age
s-maxage มีผลกับแคชร่วม (CDN) ขณะที่ max-age ใช้กับแคชของเบราว์เซอร์ สำหรับหน้า SSR โดยทั่วไปควรกำหนด s-maxage=60 (CDN แคชเป็นเวลา 60 วินาที) และ max-age=0 (เบราว์เซอร์ตรวจสอบความใหม่ทุกครั้ง) เพื่อให้ผู้ใช้ทุกคนได้รับเนื้อหาที่ค่อนข้างใหม่จากแคชที่ขอบเครือข่าย
การแคชหน้า SSR ด้วย stale-while-revalidate
การเพิ่ม stale-while-revalidate=30 ลงในส่วนหัว Cache-Control จะบอก Cloudflare ให้แสดงหน้าที่แคชไว้ทันที ขณะเดียวกันก็ดึงเวอร์ชันใหม่ในเบื้องหลัง ผู้ใช้จะได้รับการตอบกลับที่รวดเร็วเสมอ โดยความเก่าสูงสุดคือ s-maxage + stale-while-revalidate วินาที
หน้าเฉพาะบุคคล: ส่วนหัว Vary
เนื้อหาเฉพาะบุคคล (อิงตามเซสชันผู้ใช้หรือภูมิภาคภาษา) ต้องไม่ถูกส่งจากแคชร่วมให้ผู้ใช้ผิดคน ส่วนหัว Vary: Cookie บอก Cloudflare ให้ถือว่าค่า Cookie ที่ไม่ซ้ำกันแต่ละค่าเป็นรายการแคชแยกกัน จึงป้องกันไม่ให้ข้อมูลของผู้ใช้คนหนึ่งถูกส่งให้ผู้ใช้อีกคน
การข้ามแคชสำหรับคำขอที่ผ่านการยืนยันตัวตน
รูปแบบที่ใช้กันทั่วไปคือ ตรวจสอบคุกกี้เซสชันใน Worker ก่อนตัดสินใจว่าจะใช้แคชหรือไม่ หากมีคุกกี้เซสชัน ให้ข้ามแคชทั้งหมดแล้วเรนเดอร์การตอบกลับเฉพาะบุคคล หากไม่มีคุกกี้เซสชัน หน้านั้นเป็นหน้าสาธารณะและสามารถส่งจากแคชได้
Cloudflare KV: ที่เก็บคีย์-ค่าที่ขอบเครือข่าย
Cloudflare KV คือที่เก็บคีย์-ค่าที่กระจายไปทั่วโลก ซึ่งจัดเก็บข้อมูลไว้ใกล้ผู้ใช้ คุณสามารถแคช HTML ที่เรนเดอร์แล้วไว้ใน KV ได้ โดยจัดเก็บหน้าที่เรนเดอร์แล้วเป็นค่า พร้อมกำหนด TTL จากนั้นคำขอในอนาคตจะอ่านข้อมูลจาก KV ที่ขอบเครือข่ายแทนการเรนเดอร์ด้วย React ใหม่
ประสิทธิภาพการอ่านเทียบกับการเขียนของ KV
การอ่านจาก KV ทำได้รวดเร็ว เพราะข้อมูลถูกจำลองไปยัง PoP ที่ขอบเครือข่ายซึ่งให้บริการคำขอ โดยเวลาแฝงของการอ่านโดยทั่วไปต่ำกว่า 5ms อย่างไรก็ตาม การเขียนลง KV ใช้ความสอดคล้องในที่สุด: การเขียนในภูมิภาคหนึ่งจะเผยแพร่ไปยัง PoP ทั่วโลกทั้งหมดภายใน 60 วินาที ซึ่งหมายความว่าผู้ใช้บางรายอาจเห็นข้อมูลเก่าอยู่ชั่วขณะ
Cloudflare R2: ที่เก็บอ็อบเจ็กต์สำหรับทรัพยากรขนาดใหญ่
Cloudflare R2 คือบริการที่เก็บอ็อบเจ็กต์ที่เข้ากันได้กับ S3 และไม่มีค่าธรรมเนียมการส่งข้อมูลออก เหมาะสำหรับทรัพยากรขนาดใหญ่ที่ไม่เหมาะจะเก็บใน KV เช่น โมดูล WASM ภาพ OG ที่เรนเดอร์ไว้ล่วงหน้า และชุดข้อมูล JSON ขนาดใหญ่ Workers เข้าถึง R2 ผ่านการผูกทรัพยากรได้เช่นเดียวกับ KV
แท็กแคชสำหรับการทำให้แคชใช้ไม่ได้อย่างละเอียด
Cloudflare Enterprise รองรับแท็กแคช โดยคุณติดแท็กการตอบกลับด้วย Cache-Tag: product-42 และเมื่อผลิตภัณฑ์หมายเลข 42 เปลี่ยนแปลง คุณก็เรียก API ของ Cloudflare เพื่อล้างการตอบกลับทั้งหมดที่ติดแท็ก product-42 ได้ วิธีนี้ทำให้ล้างแคชเฉพาะจุดได้โดยไม่ต้องล้างแคชทั้งหมด
การจัดการการทำให้แคชใช้ไม่ได้เมื่อปรับใช้
เมื่อคุณปรับใช้ Worker เวอร์ชันใหม่ HTML ที่แคชไว้อาจอ้างอิงชื่อไฟล์บันเดิล JS เก่า กลยุทธ์ที่รัดกุมคือใส่เวอร์ชันของการปรับใช้ไว้ในคีย์แคช หรือใช้ชื่อไฟล์บันเดิลที่มีเวอร์ชัน (ผ่านการทำแฮชเนื้อหาของ Vite) เพื่อให้ HTML เก่าอ้างอิงไฟล์ JS ที่ถูกต้องและมีอยู่ในแคชเสมอ
การใช้งานแคช HTML บน KV
Worker ที่แคช HTML ของ SSR ไว้ใน KV จะทำตามรูปแบบนี้: คำนวณคีย์แคชจาก URL (และการตั้งค่าภาษาหากต้องการ) ตรวจสอบว่า KV มีข้อมูลหรือไม่ และส่ง HTML ที่แคชไว้กลับทันทีหากพบข้อมูล หากไม่พบ ให้เรนเดอร์ด้วย React จัดเก็บผลลัพธ์ไว้ใน KV พร้อม TTL แล้วส่ง HTML ที่เพิ่งเรนเดอร์กลับไป
โมเดลความสอดคล้องของ Cloudflare KV
Cloudflare KV ใช้โมเดลความสอดคล้องแบบใดสำหรับการเขียน
สรุปบทเรียน
การแคชที่ขอบเครือข่ายสำหรับแอป React ใช้หลายกลยุทธ์ร่วมกัน ได้แก่ s-maxage ของ Cache-Control สำหรับแคชหน้าสาธารณะบน CDN, Vary: Cookie เพื่อป้องกันไม่ให้มีการแชร์การตอบกลับเฉพาะบุคคล, KV สำหรับ HTML ที่เรนเดอร์แล้วและแคชไว้ที่ขอบเครือข่าย และแท็กแคชสำหรับการล้างแคชอย่างละเอียด โมเดลความสอดคล้องในที่สุดของ KV หมายความว่าการเผยแพร่การเขียนอาจใช้เวลาสูงสุด 60 วินาที ดังนั้นควรออกแบบ TTL และกลยุทธ์การล้างแคชให้เหมาะสม
คำถามที่พบบ่อย
บทเรียน “กลยุทธ์การแคชที่ขอบเครือข่ายสำหรับแอปรีแอ็กต์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “กลยุทธ์การแคชที่ขอบเครือข่ายสำหรับแอปรีแอ็กต์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส React Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “กลยุทธ์การแคชที่ขอบเครือข่ายสำหรับแอปรีแอ็กต์”
ใช้ส่วนหัว Cache-Control, Cloudflare KV และ R2 เพื่อแคชหน้าที่แสดงผลแล้วและทรัพยากรแบบคงที่ที่ขอบเครือข่าย คุณปฏิบัติ React Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน React Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน React Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “กลยุทธ์การแคชที่ขอบเครือข่ายสำหรับแอปรีแอ็กต์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน React Academy นี้ได้ไหม
ได้ บทเรียน React Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การแสดงผลที่ขอบเครือข่ายคืออะไรและเหตุใดจึงสำคัญ
- รีแอ็กต์บน Cloudflare Workers ด้วย Hono
- SSR แบบสตรีมจากขอบเครือข่าย
- กลยุทธ์การแคชที่ขอบเครือข่ายสำหรับแอปรีแอ็กต์