Чи є скрипт друку, щоб відключити всі кеші?


19

Я маю на увазі всі параметри кешування під адміністратором / налаштуваннями / продуктивністю. Я часто використовую drush sql-sync, щоб постійно підтримувати свою копію розробки з сервером. Однак, на сервері, очевидно, повинні бути включені всі кеші.

Тож мені цікаво: чи повинен я відвідувати адміністратор / налаштування / продуктивність кожного разу, коли я оновлюю свій db? Або є сценарій Друша для цього?


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, але він порушує кеш форми. Потрібно виправити його, щоб потрапити до кешу БД для кешування форм. І, ймовірно, також оновити кеш статусу.


я дам йому подивитися і побачити, чи зможу я це зафіксувати. велике спасибі за пораду :)
Capi Etheriel

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 на сервері розробників і налаштувати його для пропускання таблиць кешу при запуску sql-синхронізації. Далі буде створено псевдоніми для вашого локального сервера розробників та віддаленого сервера в реальному часі:

$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 / example / example.aliases.drushrc.php

Як остання примітка для всіх, хто намагається використовувати sql-синхронізацію, у мене виникли проблеми з аутентифікацією, коли я вперше запустив її, тому якщо хтось намагається це зробити і отримати помилки щодо публічних / приватних ключів, то зробіть наступне:

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

Команда pushkey від drush_extras створює пару приватних / відкритих ключів і натискає відкритий ключ на живий сервер. Остання команда - просто перевірити, чи спрацювала вона.


дякую, відповідь чудова. але моя проблема полягає в тому, що в моєму середовищі розробки повинні бути вимкнено кеші, і я хочу уникати відвідування адміністратора / налаштувань / продуктивності кожного разу, коли я оновлююсь.
Capi Etheriel

1

Я написав команду "удар", яка дозволяє / вимикає всі наступні параметри:

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-підказку.
Capi Etheriel

Ви маєте рацію @barraponto, я змінив сценарій і додав довідку. Нова команда є drush cache-enable min max. Перевірте вищевказану URL-адресу.
кіберп

Нова версія дозволяє / відключає block cacheтакож ..
cyberp

приголомшливий що заважає вам публікувати його на drupal.org?
Capi Etheriel

Час! Я не знаю, як це зробити :)
cyberp

1

Також ви можете відключити кеш-пам'ять нижче рядка, помістити його у settings.phpфайли

$conf['display_cache_disable'] = TRUE;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.