Làm thế nào để tắt hoàn toàn bộ nhớ đệm?


26

Tôi đang phát triển một trang web trong Drupal 7 và bộ nhớ đệm làm chậm công việc của tôi một cách đáng kể. Ví dụ, tôi có một chức năng theo chủ đề cho một hình thức. Tôi đã rất bối rối, tại sao nó không hoạt động. Cho đến khi tôi xóa bộ nhớ cache và nó đã được sửa.

Làm thế nào để tắt nó hoàn toàn?

Câu trả lời:


21

Các chức năng chủ đề được xử lý bởi sổ đăng ký chủ đề: xây dựng lại (hoặc tệ hơn là vô hiệu hóa) tất cả các bộ nhớ cache của trang web của bạn để chọn một chức năng chủ đề mới là không cần thiết và quá mức cần thiết.

Những gì bạn có thể làm là sử dụng mô-đun Devel để xây dựng lại sổ đăng ký chủ đề của bạn trên mỗi trang tải lại. Sau khi cài đặt, đi đến Cấu hình → Phát triển → Cài đặt Devel. Ở đó, kiểm tra "Xây dựng lại sổ đăng ký chủ đề trên mỗi lần tải trang" và nhấn nút "Lưu cấu hình". Hãy nhớ bỏ chọn nó (hoặc tốt hơn nữa, tắt hoàn toàn Devel) khi bạn hoàn thành quá trình phát triển.


Đây chỉ là đăng ký chủ đề mặc dù.
Andrew Welch

2
Câu hỏi là "Làm thế nào để tắt nó hoàn toàn?" đây chỉ là một phần của nó
SeanJA 17/03/2017

29

Bạn có thể thay thế bộ đệm phụ bộ đệm mặc định thành bộ đệm không thực sự làm gì cả. Chỉ cần thêm phần này vào tệp settings.php của bạn:

if (!class_exists('DrupalFakeCache')) {
  $conf['cache_backends'][] = 'includes/cache-install.inc';
}
// Default to throwing away cache data.
$conf['cache_default_class'] = 'DrupalFakeCache';
// Rely on the DB cache for form caching - otherwise forms fail.
$conf['cache_class_cache_form'] = 'DrupalDatabaseCache';

Để chắc chắn, hãy đặt thời gian hết hạn bộ đệm thành không có trên trang Hiệu suất.

Tôi thực sự sử dụng điều này trong một tệp settings.local.php, nếu nó tồn tại, được bao gồm ở dưới cùng của tệp settings.php để tôi có thể đồng bộ settings.php từ môi trường trực tiếp hoặc dàn dựng với môi trường dev của mình mà không phải lo lắng về việc sử dụng các cài đặt cơ sở dữ liệu sai, vô tình đẩy cài đặt dev để sống, v.v.

cài đặt.php:

if (file_exists(__DIR__ . '/settings.local.php')) {
  require_once __DIR__ . '/settings.local.php';
}

4
Bạn có thể sử dụng thủ thuật tương tự để tắt bộ nhớ đệm trên mỗi thùng. Ví dụ. $conf['cache_class_cache_metatag'] = 'DrupalFakeCache';
Alfred Armstrong

4
Đây phải là câu trả lời được chấp nhận, vì câu trả lời được chấp nhận chỉ mô tả cách vô hiệu hóa bộ đệm của sổ đăng ký chủ đề và không phải tất cả bộ đệm
mastazi

10

Bạn không thể biến tất cả bộ nhớ đệm hoàn toàn. Và nếu bạn thực sự đã làm, nó sẽ làm chậm tiến bộ của bạn để nhiều hơn nữa. Hãy xem xét thời gian nó thực sự xóa bộ nhớ cache, đó là những gì mỗi lần tải trang sẽ như thế nào.

Có rất nhiều hook đang chạy để xây dựng thông tin về các thực thể, trường, biểu mẫu, hook được triển khai, v.v. chỉ cần thực hiện một lần hiện tại, bạn không muốn ngăn chặn điều đó.

Khi bạn đã quen với Drupal, bạn sẽ sớm tìm hiểu những thứ cần xóa bộ nhớ cache và có thể trở nên thân thiện với phím tắt trình đơn quản trị viên hoặc drush cc allđiều này sẽ không còn là vấn đề nữa.


Đồng ý, một khi bạn nhận ra rằng hầu hết các hook mới cần xóa bộ nhớ cache trước khi nhận ra sự thuận buồm xuôi gió của nó từ đó trở đi! :)
Alex Weber

2
Thành thật sau vài tháng phát triển Drupal tôi vẫn thấy đây là một vấn đề. Tôi tin rằng trong khi phát triển tốc độ cục bộ không quan trọng, bạn không có nhiều người dùng gửi yêu cầu đồng thời. Trong hầu hết các khung công tác khác (Django, Symfony, v.v.) bị tắt bộ đệm trong khi phát triển cục bộ là một tùy chọn có sẵn, tôi không hiểu tại sao tôi cũng không có điều đó ở Drupal. Mỗi ngày tôi có ít nhất một trường hợp trong đó một cái gì đó không hoạt động và lý do là tôi quên làm sạch bộ đệm, nó xảy ra rất thường xuyên và nó thực sự làm phiền tôi.
mastazi

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.