Apakah ada skrip drush untuk menonaktifkan semua cache?

19

Maksud saya semua opsi caching di bawah admin / pengaturan / kinerja. Saya sering menggunakan drush sql-sync untuk menjaga agar salinan pengembangan saya tetap mutakhir dengan server. Namun, server harus mengaktifkan semua cache, jelas.

Jadi saya bertanya-tanya: haruskah saya mengunjungi admin / pengaturan / kinerja setiap kali saya memperbarui db? Atau adakah naskah Drush untuk itu?

Capi Etheriel
sumber
1
hanya penjelasan singkat: chx answer adalah yang terbaik karena yang diperlukan hanyalah 'drush en cache_disable --yes'. GApple datang sangat dekat, karena itu memecahkan masalah sekali dan untuk semua, meskipun mungkin akan merugikan pemula. doublejoice sebenarnya mengusulkan skrip drush, dan merupakan jawaban yang bagus untuk pertanyaan saya, meskipun dua lainnya bahkan lebih baik.
Capi Etheriel

Jawaban:

17

Anda perlu mengatur beberapa variabel untuk mematikan caching di situs dev Anda ...

 drush vset cache 0
 drush vset preprocess_css 0
 drush vset preprocess_js 0
 drush vset page_cache_maximum_age 0
 drush vset views_skip_cache TRUE

Ini bahkan lebih mudah jika Anda memiliki konfigurasi bersyarat di file settings.php Anda. Kemudian Anda dapat menyegarkan DB dan perubahan akan tetap!

$conf['cache'] = 0; // Page cache $conf['page_cache_maximum_age'] = 0; // External cache TTL $conf['preprocess_css'] = FALSE; // Optimize css $conf['preprocess_js'] = FALSE; // Optimize javascript $conf['views_skip_cache'] = TRUE; // Views caching

... meskipun jika Anda hanya mematikan berbagai caching melalui admin UI dan menghapus cache sekali maka Anda dapat tema tanpa mematikan sisanya ... karena skrip cenderung berubah.

doublejosh
sumber
Anda juga dapat mengecualikan file settings.php Anda dari repositori dengan mendorong kode Anda hingga berproduksi dan menambahkan pengaturan ini ...$conf = array( 'cache' => FALSE, //page cache 'block_cache' => FALSE, //block cache 'preprocess_css' => FALSE, //optimize css 'preprocess_js' => FALSE, //optimize javascript 'environment' => 'development' );
doublejosh
Rekomendasi lainnya ...$conf['cache'] = 0; $conf['page_cache_maximum_age'] = 0; $conf['block_cache'] = FALSE; $conf['preprocess_css'] = FALSE; $conf['preprocess_js'] = FALSE; $conf['views_skip_cache'] = TRUE;
doublejosh
11

Anda dapat menggunakan file settings.php Anda untuk secara eksplisit mengatur variabel untuk mengesampingkan pengaturan database Anda. Nilai-nilai akan dikunci untuk apa pun yang diatur dalam file, dan tidak dapat diubah melalui antarmuka admin.
Pada akhir file default adalah bagian yang dimulai:

/**
 * Variable overrides:
 *
 * To override specific entries in the 'variable' table for this site,
 * set them here. You usually don't need to use this feature. This is
 * useful in a configuration file for a vhost or directory, rather than
 * the default settings.php. Any configuration setting from the 'variable'
 * table can be given a new value. Note that any values you provide in
 * these variable overrides will not be modifiable from the Drupal
 * administration interface.
 *
 * Remove the leading hash signs to enable.
 */
# $conf = array(
#   'site_name' => 'My Drupal site',
#   'theme_default' => 'minnelli',
#   'anonymous' => 'Visitor',

Jadi ke halaman menonaktifkan, JS, dan CSS caching, set cache, preprocess_jsdan preprocess_csssemua untuk'0'

$conf = array(
  'cache' => '0',
  'preprocess_css' => '0',
  'preprocess_js' => '0',
);

Tanda kurung penutup untuk deklarasi array adalah baris terakhir dari file default, setelah beberapa blok komentar lagi, jadi pastikan untuk menghapus komentar di sana daripada menambahkan yang baru. Pastikan juga Anda tidak memiliki $confdeklarasi lain yang akan bertentangan.

Gapple
sumber
2

Anda selalu dapat menggunakan file alias drush di server dev Anda dan mengaturnya untuk melewati tabel cache ketika Anda menjalankan sql-sync. Berikut ini akan membuat alias untuk server dev lokal Anda dan server live jarak jauh Anda:

$aliases['dev'] = array(
    'root' => '/var/www/devroot',
);

$aliases['live'] = array(
    'root' => '/var/www/liveroot',
    'remote-host' => 'www.mysite.com',
    'remote-user' => 'exampleuser',
    'command-specific' => array (
       'sql-sync' => array (
         'skip-tables-list' => 'cache,cache_menu',
       ),
    ),
);

Jika Anda menyimpannya di direktori home Anda di:

~/.drush/mysite.aliases.drushrc.php

maka Anda dapat memanggil perintah sql-sync Anda seperti:

drush sql-sync @mysite.live @mysite.dev

dan itu harus melewati tabel cache (jelas saya hanya mendaftar 2 di sana, tetapi Anda bisa meletakkan apa pun di sana, saya bahkan menambahkan pengawas di).

Untuk info lebih lanjut tentang alias dan semua berbagai opsi, lihat file contoh di drush install di drush / example / example.aliases.drushrc.php

Sebagai catatan terakhir bagi siapa saja yang mencoba menggunakan sql-sync, saya memiliki masalah otentikasi ketika pertama kali menjalankannya, jadi jika seseorang mencoba ini dan mendapatkan kesalahan tentang kunci publik / pribadi maka lakukan hal berikut:

drush dl drush_extras
drush pushkey @mysite.live
drush @mysite.live status

Perintah pushkey dari drush_extras membuat pasangan kunci privat / publik dan mendorong kunci publik ke server langsung. Perintah terakhir hanya untuk memeriksa apakah itu berhasil.

Chris Graham
sumber
terima kasih, jawabannya luar biasa. tetapi masalah saya adalah bahwa lingkungan pengembangan saya harus dimatikan cache dan saya ingin menghindari mengunjungi admin / pengaturan / kinerja setiap kali saya memperbarui.
Capi Etheriel
1

Saya telah menulis perintah drush yang mengaktifkan / menonaktifkan semua opsi berikut:

cache
cache_lifetime
page_cache_maximum_age
preprocess_css
preprocess_js

Contoh dan kode dapat ditemukan di sini: http://ourlife01.blogspot.gr/2015/05/drush-command-to-enabledisable-cache.html

Jadi untuk menonaktifkan semua opsi di atas, Anda hanya perlu menjalankan:

drush cache-disable

Perintah:

drush cache-enable

sama dengan mengatur variabel ke nilai:

cache: TRUE
cache_lifetime: 1 minute
page_cache_maximum_age: 1 hour
preprocess_css: TRUE
preprocess_js: TRUE
cyberp
sumber
Itu sangat bagus, tetapi memang memiliki pendapat sendiri ketika datang untuk mengaktifkan kembali cache. Mungkin akan lebih baik untuk menyimpan nilai sebelumnya saat menonaktifkan cache atau hanya meminta pengguna melalui prompt CLI.
Capi Etheriel
Anda benar @barraponto, saya memodifikasi skrip dan saya menambahkan bantuan juga. Perintah baru adalah drush cache-enable min max. Periksa URL di atas.
cyberp
Versi baru memungkinkan / menonaktifkan block cachejuga ..
cyberp
luar biasa. apa yang menghentikan Anda dari menerbitkannya di drupal.org?
Capi Etheriel
Waktu! Saya tidak tahu bagaimana melakukannya :)
cyberp
1

Anda juga dapat menonaktifkan cache dengan baris di bawah ini, memasukkannya ke dalam settings.phpfile

$conf['display_cache_disable'] = TRUE;
Yusef
sumber