Bộ nhớ đệm
Bộ nhớ đệmCache Control

Cache Control

Included in the “Power Extensions” bundle

Khi thực thi queries đối với máy chủ GraphQL thông qua phương thức GET, phản hồi GraphQL có thể được lưu vào bộ nhớ cache ở phía client hoặc các giai đoạn trung gian giữa client và server (như CDN), bằng cách dựa vào cơ chế HTTP caching tiêu chuẩn.

Điều này hoạt động tự nhiên với persisted queries, và đối với single endpoint cũng như các custom endpoint, nó hoạt động bằng cách thêm tham số ?query={ GraphQL query } vào endpoint.

Mô tả

HTTP caching hoạt động bằng cách gửi header Cache-Control kèm giá trị max-age trong phản hồi, cho biết phản hồi cần được lưu trong bộ nhớ cache trong bao lâu.

Tiện ích Cache Control cung cấp các Cache Control List, trong đó các giá trị max-age tùy chỉnh được định nghĩa cho các field và directive. Do đó, các queries khác nhau chứa các tổ hợp field và directive khác nhau sẽ tạo ra giá trị max-age khác nhau.

Giá trị max-age của phản hồi được tính toán tự động bởi GraphQL engine. Giá trị này là max-age thấp nhất trong tất cả các field và directive của query được yêu cầu (như được định nghĩa trong Cache Control List), hoặc là no-store nếu xảy ra một trong các trường hợp sau:

  • có mutation nào đó được thực thi
  • một field hoặc directive có max-age với giá trị 0
  • một quy tắc Access Control phải kiểm tra trạng thái người dùng đối với một field hoặc directive nào đó (trong trường hợp này, phản hồi là dành riêng cho người dùng, do đó không thể được lưu vào bộ nhớ cache)

Định nghĩa chính sách cache control

Các Cache Control List

Một Custom Post Type mới "Cache Control List" được thêm vào website. Chúng ta có thể duyệt qua các mục của nó trên trang "Cache Control Lists" trong menu, và nhấp vào "Add New Cache Control List" để thêm một mục mới trong trình chỉnh sửa.

Các Cache Control List
Các Cache Control List

Trình chỉnh sửa Cache Control List

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 field và directive mà nếu chúng xuất hiện trong GraphQL query, giá trị max-age đã chọn sẽ có hiệu lực
  • Giá trị max-age

Mục Cache Control

Sau khi tạo Cache Control List, chúng ta có thể để endpoint sử dụng nó bằng cách chỉnh sửa Schema Configuration tương ứng, và chọn mục từ danh sách trong khối "Cache Control Lists".

Chọn Cache Control List trong Schema Configuration