Điều này có thể không phù hợp với tất cả mọi người và có thể không đủ nhanh cho OP - vì nó chỉ được kích hoạt trong lần khởi tạo trang tiếp theo. Tuy nhiên, nó đã giúp tôi kích hoạt mã chỉ sau khi "xóa tất cả bộ đệm" không nhạy cảm với thời gian.
Rõ ràng là HOOK
cần thay thế bằng tên mô-đun của riêng bạn.
/**
* Implements hook_init().
*/
function HOOK_init(){
// if there is no cache_not_empty defined, define it
// and then trigger our cache cleared code
if ( !cache_get('HOOK_cache_not_empty') ) {
cache_set('HOOK_cache_not_empty', TRUE);
foreach (module_implements('cache_cleared') as $module) {
module_invoke($module, 'cache_cleared');
}
}
}
/**
* Implements hook_cache_cleared().
*/
function HOOK_cache_cleared(){
// do what you need here, in which ever module.
}
Nếu bạn có một thùng cụ thể mà bạn cần nhắm mục tiêu, có thể sửa đổi ở trên để hỗ trợ điều đó, miễn là toàn bộ thùng được dọn sạch tại điểm xóa bộ nhớ cache của bạn.
hook_init
chỉ được thực hiện cho các trang không lưu trữ. Mặc dù vì xóa bộ nhớ cache đầy đủ có nghĩa là không có trang được lưu trong bộ nhớ cache, nhưng điều này không gây ra sự cố. Tuy nhiên, các hệ thống bộ nhớ đệm bên ngoài như Varnish sẽ cản trở việc kích hoạt này và điều đó có nghĩa là nó sẽ chỉ xảy ra khi yêu cầu thích hợp tiếp theo quay trở lại Drupal.
Cũng cần lưu ý rằng tùy thuộc vào hệ thống bộ nhớ đệm của bạn - chính xác là khi nào cache_set
có sẵn cho tất cả người dùng đồng thời - rằng hook này có thể được kích hoạt nhiều lần đồng thời, đặc biệt nếu bạn có số lượng người dùng lớn.