Thêm HTTP caching
Khi các queries được thực thi trên máy chủ GraphQL bằng GET (thay vì phương thức POST truyền thống hơn), phản hồi GraphQL có thể được lưu vào bộ nhớ đệm ở phía máy khách hoặc ở các giai đoạn trung gian giữa máy khách và máy chủ (chẳng hạn như CDN), bằng cách dựa vào HTTP caching tiêu chuẩn.
Điều này hoạt động tự nhiên với các persisted queries, và đối với single endpoint và custom endpoints, nó có thể hoạt động bằng cách thêm tham số ?query={ GraphQL query } vào endpoint.
Cấu hình được tạo thông qua một danh sách kiểm soát cache, và được cung cấp cho endpoint thông qua cấu hình schema.
Thực thi endpoint qua GET
Các persisted queries đã phù hợp để thực thi qua GET, vì chúng lưu trữ GraphQL query trên máy chủ (tức là không cần cung cấp trong phần thân của yêu cầu).
Tuy nhiên, đối với single endpoint và custom endpoints, query phải được cung cấp trong tham số ?query=... gắn vào URL của endpoint.
Ví dụ, GraphQL query sau:
{
posts {
id
title
url
author {
id
name
url
}
}
}...có thể được thực thi qua GET trên single endpoint như sau:
https://mysite.com/graphql/?query={ posts { id title url author { id name url } } }
Tính toán max-age tự động
Giá trị max-age của phản hồi được tính toán tự động từ các danh sách kiểm soát truy cập được gán cho endpoint (thông qua cấu hình schema).
Giá trị này là giá trị max-age thấp nhất trong số tất cả các trường và directives trong query được yêu cầu, hoặc no-store nếu:
- bất kỳ mutation nào được thực thi
- bất kỳ trường hoặc directive nào có
max-agevới giá trị0 - một quy tắc kiểm soát truy cập phải kiểm tra trạng thái người dùng cho bất kỳ trường hoặc directive nào (trong trường hợp đó, phản hồi dành riêng cho người dùng, vì vậy không thể lưu vào bộ nhớ đệm)
Max-age mặc định
Các trường không được gán max-age cụ thể sẽ sử dụng giá trị mặc định, được xác định trong Schema Configuration:

Nếu không được đặt, giá trị max-age mặc định được xác định trong trang Cài đặt, trong tab "Cache Control", sẽ được sử dụng. Giá trị này là 86400 giây, có thể được chỉnh sửa trong Cài đặt.
Ví dụ
Giả sử chúng ta có cấu hình giá trị max-age sau cho các trường của kiểu User:
name=>600url=>30
Khi đó, phản hồi cho query này sẽ có giá trị max-age được đặt thành 86400 (vì cả displayName lẫn email đều chưa được cấu hình, nên chúng sử dụng giá trị mặc định):
query {
users {
displayName
email
}
}Phản hồi cho query này sẽ có giá trị max-age được đặt thành 30 (tương ứng với url, là giá trị thấp nhất trong tất cả các trường đã được cấu hình):
query {
user(by: {id: 1}) {
name
url
}
}Phản hồi cho query này sẽ có giá trị max-age được đặt thành no-store (vì trường me yêu cầu trạng thái người dùng):
query {
me {
name
url
}
}Phản hồi cho query này sẽ có giá trị max-age được đặt thành no-store (vì nó thực thi một mutation):
mutation {
createPost {
id
}
}Truy cập tất cả các danh sách kiểm soát cache
Nhấp vào "Cache Control Lists" trong menu của plugin, nó sẽ hiển thị danh sách tất cả các danh sách kiểm soát cache đã được tạo:

Tạo một danh sách kiểm soát cache mới
Nhấp vào nút "Add New Cache Control List" để mở trình soạn thảo WordPress:

Đặt tiêu đề cho danh sách kiểm soát cache, thêm các mục với các trường và directives, và cấu hình giá trị max-age cho chúng:

Khi hoàn tất, nhấp vào nút Publish. Sau đó, danh sách kiểm soát cache mới sẽ có sẵn cho cấu hình schema.
Các mục Cache Control
Mỗi Cache Control List chứa một hoặc nhiều mục, mỗi mục có các thành phần sau:
- Các trường cần cấu hình caching
- Các directives cần cấu hình caching
- Giá trị
max-agecho chúng

Chọn các trường từ interfaces
Ngoài các trường từ các kiểu, chúng ta cũng có thể chọn các trường từ interfaces. Trong trường hợp này, giá trị max-age được áp dụng khi truy vấn những trường đó từ bất kỳ kiểu nào triển khai interface.

Mô tả danh sách kiểm soát cache
Sử dụng trường "Excerpt" trong bảng cài đặt Document để cung cấp mô tả cho danh sách kiểm soát cache.
Tìm thêm thông tin trong hướng dẫn Thêm mô tả cho API.
Sử dụng danh sách kiểm soát cache
Sau khi tạo danh sách kiểm soát cache, chúng ta có thể để Custom Endpoint hoặc Persisted Query sử dụng nó bằng cách chỉnh sửa Schema Configuration tương ứng, và chọn ACL từ danh sách trong khối "Cache Control Lists".

Nếu không tùy chỉnh cấu hình, các Cache Control Lists mặc định được xác định trên trang Cài đặt, trong tab "Cache Control", sẽ được sử dụng:
