Tôi muốn để các trang tiếp tục được hưởng lợi từ cơ chế lưu trữ bộ đệm Drupal 8 cho người dùng ẩn danh, ngoại trừ một khối cụ thể sẽ cập nhật trên mỗi lần làm mới trang biết rằng chúng được tạo từ Lượt xem.
Là nó có thể về mặt kỹ thuật? Làm sao?
Tôi muốn để các trang tiếp tục được hưởng lợi từ cơ chế lưu trữ bộ đệm Drupal 8 cho người dùng ẩn danh, ngoại trừ một khối cụ thể sẽ cập nhật trên mỗi lần làm mới trang biết rằng chúng được tạo từ Lượt xem.
Là nó có thể về mặt kỹ thuật? Làm sao?
Câu trả lời:
Những gì lượt xem khối hiển thị?
D8 có các thẻ và bối cảnh bộ đệm sẽ tự động vô hiệu hóa khối nếu có gì đó thay đổi.
Vì vậy, nếu bạn có một danh sách các nút, mỗi khi một nút được thêm hoặc cập nhật, khối đó sẽ được cập nhật, nhưng cho đến lúc đó, phiên bản được lưu trong bộ nhớ cache được sử dụng. Đó là tốt hơn nhiều so với xây dựng lại trên mỗi trang.
Nó cũng hoạt động với bộ đệm trang, những trang đó cũng sẽ được cập nhật tự động.
Nhiều, nhiều thứ chỉ hoạt động với bộ nhớ đệm ngoài hộp, mà không cần bất kỳ cấu hình thủ công nào.
Chỉnh sửa (trả lời bình luận):
Ngẫu nhiên với các plugin sắp xếp ngẫu nhiên? Điều đó sẽ tự động đánh dấu khối đó là không lưu trữ được. Tuy nhiên, điều đó không ảnh hưởng đến mô-đun bộ đệm trang. Hiện tại đã có một mô-đun bộ đệm thông minh / trang động thông minh mới nhưng nó sẽ chỉ ở phiên bản beta tiếp theo (hoặc RC!). Điều đó cuối cùng sẽ cho phép lưu trữ phần còn lại của trang và chỉ cần xây dựng phần đó.
Nhưng một trường hợp như thế này có lẽ được thực hiện tốt nhất bằng cách sử dụng một số javascript. Nếu chỉ có một vài nút, bạn có thể hiển thị tất cả chúng, được ẩn theo mặc định và chỉ ngẫu nhiên làm cho một trong số chúng hiển thị. Hoặc yêu cầu một URL có javascript trả về một Quảng cáo ngẫu nhiên hoặc thậm chí tốt hơn là truy cập ngẫu nhiên một URL N mà mỗi URL trả về một quảng cáo (ví dụ: bằng cách trả về danh sách URL và sau đó chọn một trong số chúng. Bạn thậm chí có thể làm điều đó trực tiếp cho URL hình ảnh .
Nếu đây là một khối tùy chỉnh, thì bạn có thể sử dụng API Cache và đặt tuổi tối đa của bộ đệm thành 0, ví dụ:
$build = [
// ...
'#cache' => [
'max-age' => 0,
],
];
Nếu nó là một khối hiện có, thì bạn có thể thay đổi nó để thêm nó vào mảng kết xuất.