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


19

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

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


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

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


Вы также можете исключить файл 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декларации, которая будет конфликтовать.


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

Это очень хорошо, но у него есть свое мнение, когда дело доходит до повторного включения кеша. Возможно, было бы лучше сохранить предыдущее значение при отключении кэшей или просто запросить пользователя через приглашение CLI.
— Капи Этериэль

Вы правы @barraponto, я изменил скрипт и добавил помощь. Новая команда есть drush cache-enable min max. Проверьте вышеуказанный URL.
— Cyberp

Новая версия также включает / отключает block cache..
— cyberp

классно. что мешает вам опубликовать это на drupal.org?
— Капи Этериэль

Время! Я не знаю, как это сделать :)
— Cyberp

1

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

$conf['display_cache_disable'] = TRUE;
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.