Cache Control
เมื่อรัน queries กับ GraphQL server ผ่านเมธอด GET สามารถแคช GraphQL response ไว้ที่ฝั่ง client หรือในระยะกลางระหว่าง client กับ server (เช่น CDN) ได้ โดยอาศัยการแคช HTTP มาตรฐาน
วิธีนี้ทำงานได้โดยอัตโนมัติสำหรับ persisted queries ส่วน single endpoint และ custom endpoints จะทำงานโดยการต่อพ่วงพารามิเตอร์ ?query={ GraphQL query } เข้ากับ endpoint
คำอธิบาย
การแคช HTTP ทำงานโดยส่ง header Cache-Control พร้อมค่า max-age ในการตอบสนอง เพื่อระบุว่าควรแคช response ไว้นานเท่าใด
ส่วนขยาย Cache Control มี Cache Control Lists ซึ่งสามารถกำหนดค่า max-age แบบกำหนดเองสำหรับ fields และ directives ได้ ดังนั้น queries ที่แตกต่างกันซึ่งมี fields และ directives ต่างกันจะให้ค่า max-age ที่แตกต่างกัน
ค่า max-age ของ response จะถูกคำนวณโดยอัตโนมัติโดย GraphQL engine โดยค่าดังกล่าวคือค่า max-age ที่ต่ำที่สุดจาก fields และ directives ทั้งหมดใน query ที่ร้องขอ (ตามที่กำหนดใน Cache Control List) หรือเป็น no-store หากเกิดกรณีใดกรณีหนึ่งต่อไปนี้:
- มีการรัน mutation
- field หรือ directive ใดมีค่า
max-ageเป็น0 - กฎ Access Control ต้องตรวจสอบสถานะผู้ใช้สำหรับ field หรือ directive ใด (ในกรณีนี้ response จะเฉพาะเจาะจงกับผู้ใช้แต่ละคน จึงไม่สามารถแคชได้)

Cache Control Lists
Custom Post Type ใหม่ชื่อ "Cache Control List" จะถูกเพิ่มเข้าไปในเว็บไซต์ สามารถดูรายการได้ที่หน้า "Cache Control Lists" ในเมนู และคลิก "Add New Cache Control List" เพื่อเพิ่มรายการใหม่ในตัวแก้ไข


Cache Control List แต่ละรายการประกอบด้วยรายการย่อยหนึ่งรายการขึ้นไป โดยแต่ละรายการมีองค์ประกอบดังนี้:
- Fields และ directives ที่หากปรากฏใน GraphQL query จะทำให้ค่า max-age ที่เลือกมีผลบังคับใช้
- ค่า max-age

หลังจากสร้าง Cache Control List แล้ว สามารถให้ endpoint ใช้งานได้โดยแก้ไข Schema Configuration ที่สอดคล้องกัน และเลือกรายการจากลิสต์ภายใต้บล็อก "Cache Control Lists"
