Bisakah saya mematikan cache untuk penyebaran pengembangan?

22

Pada pengembangan platform, caching bisa sangat menyebalkan. Bisakah saya mematikannya? Apakah akan memengaruhi modul mana pun yang memerlukannya?

palbakulich
sumber

Jawaban:

19

Instal modul devel yang menambahkan opsi cache yang jelas untuk administrator. Anda akan menemukan blok devel untuk ditambahkan ke wilayah untuk pembersihan cache cepat, atau jika Anda menginstal menu admin dan mendapatkan menu cepat di kiri atas untuk menghapus berbagai cache di Drupal.

Jika Anda suka menginstal baris perintah drush dan gunakan drush cc allperintah untuk menghapus cache situs Anda. Berhati-hatilah bahwa cc drush saat ini tidak menghapus cache Varnish jika itu berlaku untuk pengaturan Anda.

budda
sumber
9

Jika Anda menggunakan Drupal 7, Anda selalu dapat mengatur caching untuk menggunakan DrupalFakeCache, yang biasanya hanya digunakan selama proses instalasi. Untuk mengaturnya, lepaskan potongan kode berikut di settings.php Anda:

include_once(DRUPAL_ROOT . '/includes/cache.inc');
include_once(DRUPAL_ROOT . '/includes/cache-install.inc');
$conf['cache_default_class'] = 'DrupalFakeCache';
Mikey P
sumber
4

Halaman 'Kinerja' dalam administrasi> konfigurasi situs akan memungkinkan Anda untuk mengaktifkan / menonaktifkan caching elemen situs yang dipilih. Template tema biasanya di-cache lebih persisten tetapi dapat dibilas dalam halaman 'kinerja' yang sama.

Modul 'Administrasi menu' akan menyediakan jalan pintas di bilah alat jika cache flush perlu dilakukan lebih teratur - selama dev tema saya menemukan diri saya terus-menerus memerah.

Storsey
sumber
4

Sejauh yang saya tahu tidak ada modul yang membutuhkan caching. Jika Anda tidak ingin mematikannya, Anda dapat menghapusnya di Site Settings > Performancebagian.

Bahkan dengan caching yang dinonaktifkan, Drupal tidak akan mengenali file baru yang ditambahkan ke tema sampai Anda menghapus cache.

Ada beberapa informasi tentang berbagai cara untuk menghapus cache di Drupal.org

Paul Jones
sumber
4

Selain metode yang disebutkan Steve H , menggunakan modul Devel membuka beberapa opsi lagi, termasuk:

  • Membangun kembali cache tema pada setiap pemuatan halaman (berguna jika Anda seorang themer yang mengerjakan file templat)
  • Blok yang akan memberikan akses mudah ke fungsi cache kosong dan instal ulang fungsi.

Dengan modul Devel dan caching dimatikan di bawah Kinerja , satu-satunya cache utama lain yang akan Anda temui dalam pengembangan rutin adalah router menu, yang dapat dibangun kembali baik menggunakan Devel atau Menu Admin seperti yang disebutkan Steve.

Komunitas
sumber
4

Satu hal penting yang perlu diperhatikan adalah bahwa jika Anda memiliki banyak stylesheet (baik dari tema Anda atau dari modul), maka mematikan pengoptimalan file CSS berpotensi merusak situs Anda di IE.

Meskipun tidak benar-benar caching, ada di halaman pengaturan yang sama dan sering digunakan dengan caching.

Tautan "Siram semua cache" dalam modul menu admin sangat fantastis.

epersonae
sumber
Jika Anda khawatir tentang IE, Anda dapat menggunakan drupal.org/project/ie_css_optimizer
realityloop
3

Jika Anda menggunakan Drupal 6, modul " Cache Disable " dapat berguna untuk tugas itu jika Anda tidak ingin [karena suatu alasan] untuk menginstal modul yang lebih berat seperti Devel.

wildpeaks
sumber
2

Pertanyaan lama, tapi saya baru saja melihatnya muncul sebagai terkait dengan pencarian yang saya lakukan.

Hampir semua metode pembersihan cache akhirnya memanggil drupal_flush_all_caches pada akhirnya. Anda dapat bermain-main dengan memanggil ini dalam berbagai keadaan di kode Anda sendiri.

mpdonadio
sumber
2

Jumlah cache yang digunakan dengan Drupal terkadang bisa menjadi gila.

Berikut adalah metode umum untuk menonaktifkan dan menghapus cache Drupal dan terkait dengannya.


CACHES DISABLING:

Perhatikan bahwa Anda tidak dapat menonaktifkan semua cache, karena beberapa di antaranya diperlukan oleh Drupal.

Berikut adalah metode menonaktifkan cache dengan menambahkan baris berikut ke file pengaturan Anda:

// Disable caches
$conf['cache'] = 0;
$conf['block_cache'] = 0;
$conf['views_skip_cache'] = TRUE;
$conf['page_compression'] = 0;
$conf['preprocess_css'] = 0;
$conf['preprocess_js'] = 0;

Jika Anda menonaktifkan semua cache, situs web Anda akan sangat lambat, jadi tidak disarankan untuk lingkungan lain yang mengecualikan mesin pengembangan Anda.


CLEARING CACHES

XCache

Hapus cache XCache jika digunakan:

drush eval "function_exists('xcache_clear_cache') && xcache_clear_cache();"

Atau kosongkan cache di XCache di panel admin (/ xcache-admin) jika di atas tidak berfungsi.

eAccelerator

drush eval "function_exists('accelerator_reset') && accelerator_reset();"

APC

drush eval "function_exists('apc_clear_cache') && apc_clear_cache();"

OPCache

Hapus PHP OPCache jika menggunakan dengan PHP> = 5.5

drush eval "function_exists('opcache_reset') && opcache_reset();"

Catatan: Di atas perintah CLI tidak akan menghapus cache untuk Apache, seperti: Opcache - Bersihkan cache di PHP5.4 dan lebih rendah .

memcached

Jika Anda menggunakan memcached, Anda harus menghapus, memulai kembali atau membunuh memcached Anda dengan salah satu metode:

Sebagai pengguna (salah satunya):

echo flush_all > /dev/tcp/127.0.0.1/11211
echo flush_all | nc localhost 11211 # Flush Contents Of a Memcached Server

Sebagai root (salah satunya):

/etc/init.d/rc.d/memcached restart
service memcached restart
killall memcached # It's automatically restarted on OSX.

Disarankan juga untuk menginstal modul memcached dengan baris berikut di file pengaturan Anda:

$conf['cache_backends'][] = 'sites/all/modules/contrib/memcache/memcache.inc';

Jadi cache Memcached dibersihkan pada cache Drupal clear standar.

Pernis

Jika Anda menggunakan Varnish, disarankan untuk menginstal modul Varnish dan mengatur baris berikut di file pengaturan Anda:

$conf['cache_backends'][] = 'sites/all/modules/contrib/varnish/varnish.cache.inc';

Jadi Varnish cache akan dihapus bersama pada cache Drupal clear.

Sebagai alternatif, Anda dapat menggunakan ikal untuk membersihkan halaman secara manual:

curl -X PURGE -H "Host: domain.com" http://127.0.0.1/node/123

Baca selengkapnya: Bagaimana saya bisa menghapus cache Varnish?

Drupal

Hapus cache Drupal melalui drush:

drush cc all
echo "SHOW TABLES LIKE 'cache%'" | $(drush sql-connect) | tail -n +2 | xargs -L1 -I% echo "DELETE FROM %;" | $(drush sql-connect) -v
drush eval 'menu_rebuild();'

Anda dapat melakukan hal yang sama di / admin / config / development / performance, karena kadang-kadang cache UI dihapus dengan cara yang lebih baik daripada dari CLI.


Berikut ini adalah skrip shell yang berguna untuk membersihkan semua cache:

#!/bin/bash
set -o xtrace
echo "SHOW TABLES LIKE 'cache%'" | $(drush sql-connect) | tail -n +2 | xargs -L1 -I% echo "DELETE FROM %;" | $(drush sql-connect) -v
echo 'flush_all' | nc localhost 11211 # Flush Contents Of a Memcached Server
drush eval "function_exists('opcache_reset') && opcache_reset(); function_exists('xcache_clear_cache') && xcache_clear_cache();"
drush eval 'menu_rebuild();'
set -o xtrace -
echo done.
kenorb
sumber
3
OPCache tidak akan berfungsi dari CLI, misalnya lihat penjelasan pada: stackoverflow.com/questions/17716639/…
LarS
0

kita dapat menggunakan salah satu metode berikut untuk menghapus cache di drupal

1.) Kami cukup mengunjungi url domain_anda / admin / config / pengembangan / kinerja dan klik tombol hapus cache.

2.) Jika Kita telah menginstal modul drush kita dapat membersihkan cache dengan perintah drush cc all ini .

3.) Jika Kami memiliki akses basis data, kami dapat menghapus cache dengan perintah berikut (akses langsung ke basis data produksi dengan tegas tidak disarankan; gunakan salah satu alternatif sebagai gantinya jika situs Anda "langsung")

TRUNCATE TABLE cache;

TRUNCATE TABLE cache_block;

TRUNCATE TABLE cache_bootstrap;

TRUNCATE TABLE cache_field;

TRUNCATE TABLE cache_filter;

TRUNCATE TABLE cache_form; // perhatikan perbedaan penting dari tabel cache_ * lainnya - lihat info lebih lanjut di bawah ini

TRUNCATE TABLE cache_image;

TRUNCATE TABLE cache_menu;

TRUNCATE TABLE cache_page;

TRUNCATE TABLE cache_path;

TRUNCATE TABLE cache_token;

TRUNCATE TABLE cache_update;

4.) Kita juga dapat menulis kueri di file modul db_query ("DELETE FROM {cache};");

5.) Kita dapat menggunakan api drupal untuk membersihkan cache seperti cache_clear_all ()

6.) Kita juga dapat menghapus cache dengan modul devel menginstal modul devel dan mengaktifkan "Pengembang / Pengembangan Blok" dengan ini kita dapat menghapus cache

Info selengkapnya tentang cache_form, yang memiliki tujuan berbeda dari tabel cache_ lainnya :

  • inti api docs untuk drupal_flush_all_caches () mengatakan "Jangan hapus cache_form - pengiriman formulir yang sedang berlangsung dapat rusak." Kekhawatiran ini hanya berlaku untuk situs dengan pengguna aktif dan tidak untuk versi pengembangan.

  • metode manual lain untuk menghapus cache yang dijelaskan dalam posting ini tidak akan memengaruhi cache_form

  • jika Anda perlu mengecilkan ukuran cache_form di situs produksi, lihat Ukuran tabel Cache Form sangat besar

SynapseIndia
sumber