Bagaimana cara mematikan cache sepenuhnya?

26

Saya mengembangkan situs di Drupal 7 dan caching memperlambat pekerjaan saya secara signifikan. Misalnya, saya memiliki fungsi tema untuk formulir. Saya bingung, mengapa itu tidak berhasil. Sampai saya membersihkan cache dan itu diperbaiki.

Bagaimana cara mematikannya sepenuhnya?

pengguna4035
sumber

Jawaban:

21

Fungsi tema ditangani oleh registri tema: membangun kembali (atau lebih buruk lagi, menonaktifkan) semua cache situs Anda untuk mengambil fungsi tema baru tidak perlu dan berlebihan.

Yang dapat Anda lakukan adalah menggunakan modul Devel untuk membangun kembali registri tema Anda di setiap halaman yang dimuat ulang. Setelah terinstal, buka Konfigurasi → Pengembangan → Pengaturan pengembangan. Di sana, periksa "Bangun kembali registry tema pada setiap halaman memuat" dan tekan tombol "Simpan konfigurasi". Ingatlah untuk tidak mencentangnya (atau lebih baik lagi, nonaktifkan Devel sepenuhnya) ketika Anda selesai dengan pengembangan.


sumber
ini hanya registry tema.
Andrew Welch
2
Pertanyaannya adalah "Bagaimana cara mematikannya sepenuhnya?" ini hanya satu bagian darinya
SeanJA
29

Anda dapat mengganti backend cache default menjadi yang tidak benar-benar melakukan apa pun. Cukup tambahkan ini ke file settings.php Anda:

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';

Untuk memastikannya, atur waktu kedaluwarsa cache ke none di halaman Performance.

Saya benar-benar menggunakan ini dalam file settings.local.php yang, jika ada, akan dimasukkan di bagian bawah file settings.php saya sehingga saya dapat menyinkronkan settings.php dari lingkungan live atau staging ke lingkungan dev saya tanpa harus khawatir tentang menggunakan pengaturan basis data yang salah, secara tidak sengaja mendorong pengaturan dev untuk aktif, dll.

settings.php:

if (file_exists(__DIR__ . '/settings.local.php')) {
  require_once __DIR__ . '/settings.local.php';
}
TwoD
sumber
4
Anda dapat menggunakan trik yang sama untuk mematikan caching per nampan. Misalnya. $conf['cache_class_cache_metatag'] = 'DrupalFakeCache';
Alfred Armstrong
4
Ini harus menjadi jawaban yang diterima, karena yang diterima hanya menjelaskan cara menonaktifkan cache registri tema dan tidak semua cache
mastazi
10

Anda tidak dapat mengubah semua caching sepenuhnya. Dan jika Anda benar-benar melakukannya, itu akan memperlambat kemajuan Anda begitu banyak lagi. Pertimbangkan waktu yang dibutuhkan untuk menghapus cache, itulah yang akan menjadi seperti setiap halaman.

Ada begitu banyak kait yang berjalan untuk membangun informasi tentang entitas, bidang, formulir, kait yang diimplementasikan, dll. Yang hanya perlu dijalankan sekali saat ini, Anda tidak ingin mencegahnya.

Ketika Anda terbiasa dengan Drupal, Anda akan segera mempelajari hal-hal apa saja yang membutuhkan cache yang jelas, dan mungkin menjadi akrab dengan pintasan menu admin atau drush cc all, dan ini tidak akan lagi menjadi masalah.

Letharion
sumber
Setuju, begitu Anda menyadari bahwa sebagian besar kait baru memerlukan cache yang jelas sebelum dikenali pelayarannya lancar dari sana! :)
Alex Weber
2
Jujur setelah beberapa bulan pengembangan Drupal saya masih menemukan ini menjadi masalah. Saya percaya bahwa sementara mengembangkan kecepatan secara lokal tidak penting, Anda tidak memiliki banyak pengguna yang mengirimkan permintaan secara bersamaan. Dalam sebagian besar kerangka kerja lainnya (Django, Symfony dll) memiliki cache dinonaktifkan saat mengembangkan secara lokal adalah pilihan yang tersedia, saya tidak melihat mengapa saya tidak bisa memilikinya di Drupal juga. Setiap hari saya memiliki setidaknya satu contoh di mana ada sesuatu yang tidak berfungsi dan alasannya adalah saya lupa membersihkan cache, itu terjadi sangat sering dan itu benar-benar mengganggu saya.
mastazi