Есть ли скрипт для отключения всех кэшей?

19

Я имею в виду все параметры кэширования в разделе admin / settings / performance. Я часто использую drush sql-sync, чтобы поддерживать свою копию разработки на сервере. Однако на сервере должны быть включены все кэши, очевидно.

Поэтому мне интересно: должен ли я посещать admin / settings / performance каждый раз, когда обновляю свою базу данных? Или для этого есть сценарий Drush?

Capi Etheriel
источник
1
только краткое объяснение: ответ chx является лучшим, поскольку все, что нужно, это 'drush en cache_disable --yes'. GApple подходит очень близко, так как он решает проблему раз и навсегда, хотя это может повредить новичкам. На самом деле doublejoice предлагает скриптовый сценарий и является прекрасным ответом на мой вопрос, хотя два других даже лучше.
Capi Etheriel

Ответы:

6

https://drupal.org/node/797346 для D7. Для D6 https://drupal.org/project/cache_disable, но это нарушает кеш формы. Нужно исправить это, чтобы попасть в кеш БД для кеширования форм. И, возможно, обновить кэш статуса тоже.


источник
Я посмотрю и посмотрю, смогу ли я это исправить.
Большое
17

Вам нужно установить несколько переменных, чтобы отключить кэширование на вашем сайте разработчика ...

 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. Затем вы можете обновить БД и изменения будут сохранены!

$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

... хотя, если вы просто отключите различное кэширование через интерфейс администратора и очистите кэш один раз, тогда вы можете удалить тему, не отключая остальных ... так как сценарий с меньшей вероятностью изменится.

doublejosh
источник
Вы также можете исключить файл settings.php из репозитория, в который вы загружаете код, и добавить эти настройки ...$conf = array( 'cache' => FALSE, //page cache 'block_cache' => FALSE, //block cache 'preprocess_css' => FALSE, //optimize css 'preprocess_js' => FALSE, //optimize javascript 'environment' => 'development' );
doublejosh
Дополнительные рекомендации ...$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

Вы можете использовать файл settings.php, чтобы явно установить переменные для переопределения настроек базы данных. Значения будут заблокированы для того, что установлено в файле, и не могут быть изменены через интерфейс администратора.
В конце файла по умолчанию находится раздел, который начинается:

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

Так отключить страницы, JS и кэширования CSS, набор cache, preprocess_jsи preprocess_cssвсе'0'

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

Закрывающая круглая скобка для объявления массива - это последняя строка файла по умолчанию после нескольких дополнительных блоков комментариев, поэтому убедитесь, что вы раскомментировали ее, а не добавили новую. Также убедитесь, что у вас нет другой $confдекларации, которая будет конфликтовать.

gapple
источник
2

Вы всегда можете использовать файл псевдонимов drush на своем dev-сервере и настроить его на пропуск таблиц кэша при запуске sql-sync. Следующее создаст псевдонимы для вашего локального сервера разработки и вашего удаленного живого сервера:

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

Если вы сохранили это в своем домашнем каталоге по адресу:

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

тогда вы можете вызвать команду sql-sync следующим образом:

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

и он должен пропустить таблицы кеша (очевидно, я перечислил там только 2, но вы можете поместить туда что угодно, я даже добавил сторожевой таймер).

Для получения дополнительной информации об псевдонимах и всех различных параметрах, проверьте файл примера в вашей установке drush по адресу drush / examples / example.aliases.drushrc.php

В качестве последнего замечания для тех, кто пытается использовать sql-sync, у меня были проблемы с аутентификацией при первом запуске, поэтому, если кто-то попытается это сделать и получит ошибки об открытых / закрытых ключах, выполните следующие действия:

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

Команда pushkey из drush_extras создает пару секретный / открытый ключ и передает открытый ключ на работающий сервер. Последняя команда - просто проверить, что это сработало.

Крис Грэм
источник
спасибо, ответ замечательный но моя проблема в том, что в моей среде разработки должны быть отключены кэши, и я хочу, чтобы каждый раз, когда я обновлялся, не заходил в администратор / настройки / производительность.
Capi Etheriel
1

Я написал команду drush, которая включает / отключает все следующие параметры:

cache
cache_lifetime
page_cache_maximum_age
preprocess_css
preprocess_js

Примеры и код можно найти здесь: http://ourlife01.blogspot.gr/2015/05/drush-command-to-enabledisable-cache.html

Таким образом, чтобы отключить все вышеперечисленные параметры, вам нужно просто запустить:

drush cache-disable

Команда:

drush cache-enable

это то же самое, что установка переменных в значения:

cache: TRUE
cache_lifetime: 1 minute
page_cache_maximum_age: 1 hour
preprocess_css: TRUE
preprocess_js: TRUE
cyberp
источник
Это очень хорошо, но у него есть свое мнение, когда дело доходит до повторного включения кеша. Возможно, было бы лучше сохранить предыдущее значение при отключении кэшей или просто запросить пользователя через приглашение CLI.
Капи Этериэль
Вы правы @barraponto, я изменил скрипт и добавил помощь. Новая команда есть drush cache-enable min max. Проверьте вышеуказанный URL.
Cyberp
Новая версия также включает / отключает block cache..
cyberp
классно. что мешает вам опубликовать это на drupal.org?
Капи Этериэль
Время! Я не знаю, как это сделать :)
Cyberp
1

Также вы можете отключить кеш ниже строки, положить его в settings.phpфайлы

$conf['display_cache_disable'] = TRUE;
Юсеф
источник