Vô hiệu hóa bộ đệm cho các khối cụ thể


9

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?


Như MPD đã lưu ý, hãy sử dụng cài đặt tuổi tối đa. Ngoài ra, bạn cũng có thể làm điều này thông qua giao diện người dùng trên mẫu chỉnh sửa khối.

Tôi cũng có vấn đề này - thật khó chịu khi Drupal không tự động giải quyết vấn đề này. Bộ nhớ đệm là tốt, nhưng Drupal được cho là dành cho các trang web động ...
James

Câu trả lời:


1

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 .


Lượt xem trả về một nút ngẫu nhiên để thay đổi khối quảng cáo.
Amine

Tôi sẽ đợi bản phát hành tiếp theo cho giải pháp sạch vì vậy :)
Amine

Có, ngẫu nhiên là từ plugin Lượt xem ngẫu nhiên. Tôi đồng ý, có thể tạo nội dung khối javascript đưa vào danh sách các thực thể và sau đó quyết định ở lớp trình duyệt với một số chức năng ngẫu nhiên hoặc vòng tròn để chọn và khởi động một trong số chúng. Tuy nhiên, tôi sẽ có nhiều hơn một khối như thế này trong một số trang và giải pháp phía máy chủ sẽ phù hợp nhất.
Amine

10

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.


Như đã giải thích trong câu hỏi, khối của tôi là khối Lượt xem. Tôi nghĩ nó quá phức tạp để can thiệp vào lớp php / module.
Amine

1
Thật không may, dù sao thì nó cũng không hoạt động (đã thử). Có vẻ như trang được phân phối từ pagecache và chứa khối lỗi thời. Nhưng tôi vẫn đang điều tra.
Rainer Feike
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.