Có hai cấp độ bộ nhớ đệm trong Drupal.
1.) Cache trang động
Bạn phải cung cấp siêu dữ liệu bộ đệm chính xác trên phản hồi json.
Ví dụ: sử dụng thuộc tính bộ đệm từ cấu hình hoặc thực thể nội dung
$response->addCacheableDependency($entitiy);
hoặc xây dựng một đối tượng siêu dữ liệu có thể lưu trong bộ nhớ cache và thêm điều này vào phản hồi:
$build = [
'#cache' => [
'contexts' => ['url.query_args'],
'tags' => ['node:1', 'node_list'],
'max-age' => 300,
],
];
$cache_metadata = \Drupal\Core\Cache\CacheableMetadata::createFromRenderArray($build);
$response->addCacheableDependency($cache_metadata);
Bạn có thể sử dụng điều này trong bộ điều khiển tùy chỉnh hoặc thực hiện điều này trong một thuê bao sự kiện để thay đổi phản hồi từ các mô-đun khác (cốt lõi hoặc đóng góp).
2.) Bộ nhớ cache trang nội bộ
Mô-đun Bộ đệm trang nội bộ lưu trữ tất cả các phản hồi cho các yêu cầu ẩn danh bất kể siêu dữ liệu bộ đệm. Bạn có thể gỡ cài đặt mô-đun này để vô hiệu hóa bộ đệm này.
Giải pháp thay thế
Về phía khách hàng nối thêm một chuỗi truy vấn khác nhau vào mỗi yêu cầu để nhận được phản hồi mới:
node/123?_format=json&time=123456789
Điều này sẽ vô hiệu hóa Bộ đệm ẩn trang nội bộ và các bộ phận của Bộ đệm trang động .
Tham khảo: https://www.drupal.org/docs/8/core/modules/rest/javascript-and-drupal-8-restful-web-service