Geliştirme platformunda önbellekleme bir ağrı olabilir. Kapatabilir miyim? İhtiyacı olan modüllerin herhangi birini etkiler mi?
Geliştirme platformunda önbellekleme bir ağrı olabilir. Kapatabilir miyim? İhtiyacı olan modüllerin herhangi birini etkiler mi?
Yanıtlar:
Yöneticiler için önbellek temizleme seçeneği ekleyen devel modülünü kurun . Hızlı önbellek temizlemesi için bir bölgeye eklemek için bir devel bloğu veya yönetici menüsünü yükler ve Drupal'daki çeşitli önbellekleri temizlemek için sol üst kısımdan hızlı bir menü alırsanız.
Komut satırını seviyorsanız, sarhoş komutunu kurun ve drush cc all
sitelerinizin önbelleklerini temizlemek için komutu kullanın. Şu anda drush cc'nin, kurulumunuz için geçerliyse, Vernik önbelleğini temizlemediğini unutmayın.
Drupal 7 kullanıyorsanız, önbelleğinizi daima normalde yalnızca yükleme işlemi sırasında kullanılan DrupalFakeCache kullanarak ayarlayabilirsiniz. Bunu ayarlamak için, ayarlarınızdaki aşağıdaki kod parçasını bırakın:
include_once(DRUPAL_ROOT . '/includes/cache.inc');
include_once(DRUPAL_ROOT . '/includes/cache-install.inc');
$conf['cache_default_class'] = 'DrupalFakeCache';
Yönetim> site yapılandırmasındaki 'Performans' sayfası, seçilen site öğelerinin önbelleğe alınmasını etkinleştirmenizi / devre dışı bırakmanızı sağlar. Tema şablonları genellikle daha kalıcı olarak önbelleğe alınır, ancak aynı 'performans' sayfasında yıkanabilir.
'Yönetim menüsü' modülü, önbellek temizlemelerinin daha düzenli yapılması gerekiyorsa araç çubuğuna bir kısayol sağlayacaktır - tema sırasında kendimi sürekli temizlemekte buluyorum.
Bildiğim kadarıyla önbellekleme gerektiren herhangi bir modül yok . Kapatmak istemiyorsanız, bu Site Settings > Performance
bölümü temizleyebilirsiniz .
Önbelleğe alma devre dışı olsa bile, Drupal, önbelleği temizleyene kadar temalara eklenen yeni dosyaları tanımaz.
Drupal.org adresindeki önbelleği temizlemenin farklı yolları hakkında bazı bilgiler var
Steve H'nin bahsettiği yöntemlere ek olarak, Devel modülünü kullanmak da dahil olmak üzere birkaç seçenek daha açar:
Devel modülü ve önbellekleme Performans altında kapalıyken , rutin gelişimde gerçekleştireceğiniz tek büyük önbellek, Steve'in söylediği gibi Devel veya Yönetici Menüsü kullanılarak yeniden oluşturulabilecek menü yönlendiricisidir.
Unutulmaması gereken önemli bir nokta, çok fazla stil sayfanız varsa (temanızdan veya modüllerinizden), ardından CSS dosyası optimizasyonunu kapatmanın sitenizi IE’de bozma potansiyeline sahip olmasıdır.
Önbelleğe almamakla birlikte, aynı ayarlar sayfasında bulunur ve genellikle önbelleğe alma ile birlikte kullanılır.
Yönetici menü modülündeki "Tüm önbellekleri temizle" bağlantısı bu arada harika.
Drupal 6 kullanıyorsanız, [bazı nedenlerden dolayı] Devel gibi daha ağır modüller kurmak istemiyorsanız , " Önbellek Devre Dışı " modülü bu görev için kullanışlı olabilir.
Eski soru, ancak yaptığım bir arama ile ilgili olarak ortaya çıktığını gördüm.
Neredeyse tüm önbellek temizleme yöntemlerinin sonunda drupal_flush_all_caches çağrılır . Bunu kendi şartlarınızda çeşitli durumlarda arayarak oynayabilirsiniz.
Drupal ile birlikte kullanılan önbellek miktarı bazen delirebilir.
Drupal önbelleklerini devre dışı bırakma ve temizlemenin ve bununla ilişkilendirmenin yaygın yöntemleri şunlardır.
ENGELLEME KEKLERİ:
Bazılarının Drupal tarafından zorunlu tutulduğundan tüm önbellekleri devre dışı bırakamayacağınızı unutmayın.
Ayarlar dosyasına aşağıdaki satırları ekleyerek önbellekleri devre dışı bırakmanın bir yöntemi:
// 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;
Tüm önbelleklerinizi devre dışı bırakırsanız, web siteniz çok yavaş olacaktır, bu nedenle geliştirme makinenizi muaf tutan diğer ortamlar için önerilmez.
TEMİZLEME CACHES
XCache
Eğer kullanılıyorsa XCache önbelleklerini temizleyin:
drush eval "function_exists('xcache_clear_cache') && xcache_clear_cache();"
Veya yukarıdaki çalışmazsa, yönetici panelindeki (/ xcache-admin) XCache'deki önbelleği temizleyin.
eAccelerator
drush eval "function_exists('accelerator_reset') && accelerator_reset();"
APC
drush eval "function_exists('apc_clear_cache') && apc_clear_cache();"
OPCache
PHP> = 5.5 ile kullanılıyorsa PHP OPCache'yi silin
drush eval "function_exists('opcache_reset') && opcache_reset();"
Not: Yukarıdaki CLI komutu, Apache için önbelleği temizlemeyecektir: Opcache - Önbelleği PHP5.4'te temizleyin ve daha düşük .
memcached
Memcached kullanıyorsanız, memcached'inizi aşağıdaki yöntemlerden biriyle temizlemeniz, yeniden başlatmanız veya öldürmeniz gerekir:
Bir kullanıcı olarak (bunlardan biri):
echo flush_all > /dev/tcp/127.0.0.1/11211
echo flush_all | nc localhost 11211 # Flush Contents Of a Memcached Server
Kök olarak (bunlardan biri):
/etc/init.d/rc.d/memcached restart
service memcached restart
killall memcached # It's automatically restarted on OSX.
Ayrıca, ayar dosyanızda aşağıdaki satırı içeren memcached modülünü kurmanız önerilir:
$conf['cache_backends'][] = 'sites/all/modules/contrib/memcache/memcache.inc';
Böylece standart Drupal temiz önbellekte Memcached önbellekleri temizlenir.
vernik
Varnish kullanıyorsanız, Varnish modülünü kurmanız ve ayarlar dosyanızda aşağıdaki satırı ayarlamanız önerilir :
$conf['cache_backends'][] = 'sites/all/modules/contrib/varnish/varnish.cache.inc';
Bu nedenle, Varnish önbelleği, Drupal net önbelleğinde birlikte temizlenir.
Alternatif olarak, sayfaları elle temizlemek için kıvrılma kullanabilirsiniz:
curl -X PURGE -H "Host: domain.com" http://127.0.0.1/node/123
Devamını oku: Vernik önbelleğini nasıl temizleyebilirim?
Drupal
Drupal önbelleklerini drush ile temizleyin:
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();'
Aynı şeyi / admin / config / development / performance konumunda yapabilirsiniz, çünkü bazen UI önbellekleri CLI'dan daha iyi bir şekilde temizlenir.
Tüm önbellekleri temizlemek için yararlı bir kabuk betiği:
#!/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.
önbellek drupal temizlemek için aşağıdaki yöntemlerden birini kullanabiliriz
1.) Sadece url_alanınız / admin / config / development / performance adresini ziyaret edebilir ve önbellek sil düğmesini tıklayabiliriz.
2.) Eğer drush modülünü kurduysak, bu drush cc all komutuyla önbelleği temizleyebiliriz .
3.) Veritabanına erişimimiz varsa, aşağıdaki komutlarla önbelleği temizleyebiliriz (üretim veritabanına doğrudan erişim kesinlikle önerilmez; siteniz "canlı" ise alternatiflerden birini kullanın)
TRUNCATE TABLE önbelleği;
TRUNCATE TABLE cache_block;
TRUNCATE TABLE cache_bootstrap;
TRUNCATE TABLE cache_field;
TRUNCATE TABLE cache_filter;
TRUNCATE TABLE cache_form; // diğer önbellek_ * tablolarındaki önemli farkları not edin - daha fazla bilgi için aşağıya bakın
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.) Modül dosyamızda db_query ("DELETE FROM {cache};");
5.) cache_clear_all () gibi cache'leri temizlemek için drupal api kullanabiliriz.
6.) Ayrıca önbellek devel modül yükleme devel modül tarafından temizleyebilir ve "Geliştirici / Geliştirme Bloğu" etkinleştirerek önbellek temizleyebiliriz
Diğer cache_ tablolarından farklı bir amacı olan cache_form hakkında daha fazla bilgi :
drupal_flush_all_caches () için core api docs "cache_form'u temizlemeyin - devam eden form gönderimleri bozulabilir." Bu endişe, geliştirme sürümleri için değil, yalnızca aktif kullanıcıları olan siteler için geçerlidir.
Bu yazıda açıklanan önbellekleri temizlemenin diğer manuel yöntemleri cache_form'u etkilemeyecektir
Bir üretim sitesinde cache_form boyutunu küçültmeniz gerekiyorsa, bkz. Önbellek Formu tablo boyutu çok büyük