Làm cách nào để vô hiệu hóa bộ đệm trên Chế độ xem cụ thể?


8

Tôi đang phải đối mặt với một tình huống mà tôi cần phải vô hiệu hóa một Chế độ xem cụ thể để bắt đầu xóa bộ đệm trên Chế độ xem đó.

Views_invalidate_cache () xóa TẤT CẢ dữ liệu Lượt xem được lưu trong bộ nhớ cache cho mọi Chế độ xem trên trang web.

Làm cách nào tôi có thể kích hoạt tính năng vô hiệu hóa bộ đệm cho Chế độ xem cụ thể từ bên trong mã mô-đun của mình?


Câu trả lời:


3

Tôi tin rằng chức năng bạn đang tìm kiếm là cache_flush từ plugin bộ đệm xem.


Sửa lỗi cho tôi nếu tôi sai, nhưng có vẻ như bạn phải có toàn bộ Chế độ xem trong phạm vi để thực hiện việc này. Tất nhiên điều đó là có thể, nhưng có vẻ như cần có một chức năng mà tôi có thể gọi như cache_flush ($ view_id) mà không phải tải toàn bộ chế độ xem. Chỉ tò mò :-)
sheldonkreger

cache_flushDrupal 6 và 7 chỉ? Tôi không thấy nó trong mô-đun Lượt xem cho Drupal 8.
Yzmir Ramirez

10

Nếu bạn biết tên của chế độ xem mà bạn muốn xóa, thì bạn có thể xóa bộ nhớ cache cụ thể cho chế độ xem đó bằng cách gọi một hàm như sau:

/**
 * Function to invalidate selected views caches to enable the action forms to work
 */
function mymodule_invalidate_views_cache($view_name) {
  cache_clear_all('ctools_export:views_view:' . $view_name, 'cache_views', TRUE);
  cache_clear_all($view_name, 'cache_views_data', TRUE);
}

Tôi cần điều này để cho phép các hành động VBO với các hình thức cấu hình có thể hoạt động trong khi chế độ lưu bộ đệm xem được bật (Tôi đang sử dụng bộ đệm ẩn nội dung). Tôi đã gọi nó hai lần, một lần trong hàm mymodule_myaction_form () và một lần nữa trong hàm mymodule_myaction_submit ().


1

Bạn có thể xem xét sử dụng bộ đệm nội dung xem .

Nó thường được sử dụng để tự động xóa bộ đệm xem khi nội dung liên quan được thêm hoặc cập nhật, tuy nhiên, nó cung cấp khung để theo dõi phân đoạn bộ đệm. Tôi đã không làm điều này, nhưng tài liệu dành cho nhà phát triển có sẵn.


Tôi đặc biệt đang tìm cách nhắm mục tiêu bộ đệm Chế độ xem với PHP từ trong mã mô-đun của riêng tôi. Cảm ơn vì đã chia sẻ điều này, mặc dù, nó có thể giúp đỡ người khác. Vấn đề bộ nhớ cache của tôi không phù hợp với mô-đun này.
sheldonkreger

1

Hãy xem các hành động Cache dự án . Nó làm chính xác những gì bạn muốn. Nếu bạn có thể sử dụng các quy tắc trong tình huống của mình, thì bạn thậm chí không cần phải viết mã tùy chỉnh, bạn chỉ có thể sử dụng mô-đun như hiện trạng và thiết lập quy tắc để xóa bộ nhớ cache của các chế độ xem nhất định. Mặt khác, hãy kiểm tra các phần bên trong về cách thức hoạt động của nó như một hướng dẫn để xóa bộ nhớ cache theo chương trình.


Thông tin tốt cho những người khác có thể hạ cánh ở đây, nhưng tôi đặc biệt cần một cách để xóa bộ đệm xem ở một vị trí cụ thể trong mã PHP của tôi.
sheldonkreger

0

Không đoán bạn quá nhiều, nhưng bạn đã xem xét một hệ thống bộ nhớ cache proxy ngược như véc ni chưa? Những thứ đó cho hiệu năng đáng kinh ngạc và làm cho bộ nhớ cache db của các khung nhìn, các nút, v.v ... hơi khó xử (trừ khi bạn có nhiều người dùng đã đăng nhập và cần bộ đệm này cho chúng).


Đây là lời khuyên hiệu suất chung tuyệt vời nhưng không trả lời câu hỏi cụ thể mà tôi đã hỏi. Thông tin tốt mặc dù.
sheldonkreger
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.