Tüm önbellekleri devre dışı bırakan bir komut dosyası var mı?


19

Yönetici / ayarlar / performans altındaki tüm önbellekleme seçeneklerini kastediyorum. Geliştirme kopyamı sunucu ile güncel tutmak için sık sık drr sql-sync kullanıyorum. Ancak, sunucunun tüm önbellekleri açık olması gerekir.

Bu yüzden merak ediyorum: db'yi her güncellediğimde admin / settings / performance'i ziyaret etmeli miyim? Yoksa bunun için bir Drush senaryosu var mı?


1
sadece kısa bir açıklama: chx cevap en iyisidir çünkü tek gereken 'drush en cache_disable --yes'. GApple gerçekten yakın geliyor, çünkü sorunu bir kez ve herkes için çözüyor, ancak yeni başlayanlara zarar verebilir. doublejoice aslında bir drush senaryosu önerir ve diğer ikisi daha iyi olmasına rağmen, soruma harika bir cevap.
Capi Etheriel

Yanıtlar:



17

Geliştirici sitenizdeki önbelleği kapatmak için birkaç değişken ayarlamanız gerekir ...

 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

Settings.php dosyanızda koşullu yapılandırma varsa daha da kolaydır. Sonra DB yenileyebilirsiniz ve değişiklikler yapışacaktır!

$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

... ancak yönetici kullanıcı arayüzü üzerinden çeşitli önbelleği kapatırsanız ve önbelleği bir kez temizlerseniz, geri kalanını kapatmadan temayı kaldırabilirsiniz ... çünkü komut dosyası daha az değişme olasılığı vardır.


Ayrıca, settings.php dosyanızı itme kodunuzu üretime kadar olan depodan hariç tutabilir ve bu ayarları ekleyebilirsiniz ...$conf = array( 'cache' => FALSE, //page cache 'block_cache' => FALSE, //block cache 'preprocess_css' => FALSE, //optimize css 'preprocess_js' => FALSE, //optimize javascript 'environment' => 'development' );
doublejosh

Daha fazla öneri ...$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

Veritabanı ayarlarınızı geçersiz kılmak üzere değişkenleri açıkça ayarlamak için settings.php dosyanızı kullanabilirsiniz . Değerler, dosyada ayarlanan değere kilitlenir ve yönetici arayüzü aracılığıyla değiştirilemez.
Varsayılan dosyanın sonunda başlayan bir bölüm vardır:

/**
 * 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',

Yani devre dışı sayfasında, JS ve CSS önbelleğe alma, sete cache, preprocess_jsve preprocess_csstüm'0'

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

Dizi bildirimi için kapanış parantezleri, birkaç yorum bloğundan sonra varsayılan dosyanın son satırıdır, bu nedenle yeni bir tane eklemek yerine bu listenin işaretini kaldırdığınızdan emin olun. Ayrıca $conf, çelişecek başka bir bildiriminiz olmadığından emin olun .


2

Geliştirme sunucunuzda her zaman bir drush aliases dosyası kullanabilir ve sql-sync'yi çalıştırdığınızda önbellek tablolarını atlayacak şekilde ayarlayabilirsiniz. Aşağıdakiler, yerel geliştirici sunucunuz ve uzak canlı sunucunuz için takma adlar oluşturur:

$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',
       ),
    ),
);

Bunu ana dizininizin altına adresinde kaydettiyseniz:

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

sql-sync komutunu şöyle çağırabilirsiniz:

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

ve önbellek tablolarını atlamalıdır (açıkçası ben sadece 2 orada listelenen, ama orada bir şey koyabilirsiniz, ben bile bekçi köpeği eklemek).

Takma adlar ve çeşitli seçenekler hakkında daha fazla bilgi için, drush kurulumunuzdaki drush / samples / example.aliases.drushrc.php adresindeki örnek dosyaya göz atın.

Sql-sync kullanmak isteyen herkes için son bir not olarak, ilk çalıştırdığımda kimlik doğrulama sorunları vardı, bu yüzden birisi bunu denerse ve genel / özel anahtarlar hakkında hatalar alırsa aşağıdakileri yapın:

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

Drush_extras komutunun pushkey komutu özel / ortak anahtar çifti oluşturur ve ortak anahtarı canlı sunucuya iletir. Son komut sadece çalışıp çalışmadığını kontrol etmektir.


teşekkürler, cevap harika. ama benim sorunum benim geliştirme ortamı önbellekleri kapalı olmalıdır ve ben her güncelleme zaman admin / ayarları / performans ziyaret önlemek istiyorum.
Capi Etheriel

1

Aşağıdaki seçeneklerin tümünü etkinleştiren / devre dışı bırakan bir drush komutu yazdım:

cache
cache_lifetime
page_cache_maximum_age
preprocess_css
preprocess_js

Örnekler ve kodları şu adreste bulabilirsiniz: http://ourlife01.blogspot.gr/2015/05/drush-command-to-enabledisable-cache.html

Yukarıdaki seçeneklerin tümünü devre dışı bırakmak için sadece şunu çalıştırmanız gerekir:

drush cache-disable

Komuta:

drush cache-enable

değişkenleri değerlere ayarlamakla aynıdır:

cache: TRUE
cache_lifetime: 1 minute
page_cache_maximum_age: 1 hour
preprocess_css: TRUE
preprocess_js: TRUE

Bu çok güzel, ama önbelleği yeniden etkinleştirmek söz konusu olduğunda kendi fikri var. Önbellekleri devre dışı bırakırken veya kullanıcıdan bir CLI istemi aracılığıyla sorurken önceki değeri kaydetmek daha iyi olabilir.
Capi Etheriel

Haklısın @barraponto, senaryoyu değiştirdim ve yardım da ekledim. Yeni komut drush cache-enable min max. Yukarıdaki URL'yi kontrol edin.
cyberp

Yeni sürüm de etkinleştirir / devre dışı bırakır block cache..
cyberp

müthiş. drupal.org'da yayınlamanızı engelleyen nedir?
Capi Etheriel

Zamanı! Nasıl yapılacağını bilmiyorum :)
cyberp

1

Ayrıca önbelleği aşağıdaki satırdan devre dışı bırakabilir, settings.phpdosyalara koyabilirsiniz

$conf['display_cache_disable'] = TRUE;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.