Можно ли отключить кеш для развертывания разработки?

22

На платформе разработки кеширование может быть болезненным. Могу ли я выключить его? Будет ли это влиять на любой из модулей, которые требуют этого?

palbakulich
источник

Ответы:

19

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

Если вам нравится командная строка, установите drush и используйте drush cc allкоманду для очистки кэшей ваших сайтов. Помните, что в настоящее время drush cc не очищает кэш Varnish, если это применимо к вашей настройке.

будда
источник
9

Если вы используете Drupal 7, вы всегда можете настроить кеширование на использование DrupalFakeCache, который обычно используется только в процессе установки. Чтобы установить это, добавьте следующий фрагмент кода в файл settings.php:

include_once(DRUPAL_ROOT . '/includes/cache.inc');
include_once(DRUPAL_ROOT . '/includes/cache-install.inc');
$conf['cache_default_class'] = 'DrupalFakeCache';
Майки П
источник
4

Страница «Производительность» в разделе «Администрирование»> «Конфигурация сайта» позволит вам включить / отключить кэширование выбранных элементов сайта. Шаблоны тем обычно кэшируются более постоянно, но могут быть сброшены на той же странице «производительности».

Модуль «Меню администрирования» обеспечит ярлык на панели инструментов, если очистка кеша должна выполняться более регулярно - во время разработки темы я постоянно сбрасываюсь.

Storsey
источник
4

Насколько я знаю, нет никаких модулей, которые требуют кэширования. Если вы не хотите выключать его, вы можете очистить его в Site Settings > Performanceразделе.

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

На Drupal.org есть информация о том, как очистить кеш.

Пол Джонс
источник
4

В дополнение к методам, упомянутым Стивом Х , использование модуля Devel открывает еще несколько опций, в том числе:

  • Восстановление кеша темы при каждой загрузке страницы (полезно, если вы работаете с файлами шаблонов)
  • Блок, который обеспечит легкий доступ к пустой функции кэша и функции переустановки.

Когда модуль Devel и кеширование отключены в разделе « Производительность» , единственным другим основным кешем, с которым вы столкнетесь при рутинной разработке, является маршрутизатор меню, который можно перестроить, используя Devel или Admin Menu, как упоминал Стив.

Сообщество
источник
4

Важно отметить, что если у вас много таблиц стилей (из вашей темы или из модулей), то отключение оптимизации CSS-файлов может привести к поломке вашего сайта в IE.

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

Кстати, ссылка «Сбросить все кэши» в модуле админ-меню просто фантастическая.

epersonae
источник
Если вы беспокоитесь о IE, вы можете использовать drupal.org/project/ie_css_optimizer
realityloop
3

Если вы используете Drupal 6, модуль « Cache Disable » может быть полезен для этой задачи, если вы не хотите [по какой-то причине] устанавливать более тяжелые модули, такие как Devel.

wildpeaks
источник
2

Старый вопрос, но я просто увидел, что он всплыл как связанный с поиском, который я проводил.

Почти все методы очистки кэша в конечном итоге вызывают drupal_flush_all_caches . Вы можете поиграть с этим при различных обстоятельствах в своем собственном коде.

mpdonadio
источник
2

Количество кэшей, используемых с Drupal, иногда может сойти с ума.

Вот общие методы отключения и очистки кешей Drupal и связанные с ними.


ОТКЛЮЧЕНИЕ КЕШОВ:

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

Вот метод отключения кэшей, добавив следующие строки в ваш файл настроек:

// 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;

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


ОЧИСТКА КЭШОВ

XCache

Очистить кеш XCache, если используется:

drush eval "function_exists('xcache_clear_cache') && xcache_clear_cache();"

Или очистите кэш в XCache в панели администратора (/ xcache-admin), если выше не будет работать.

Eaccelerator

drush eval "function_exists('accelerator_reset') && accelerator_reset();"

APC

drush eval "function_exists('apc_clear_cache') && apc_clear_cache();"

OPCache

Очистить PHP OPCache при использовании с PHP> = 5.5

drush eval "function_exists('opcache_reset') && opcache_reset();"

Примечание. Команда выше CLI не очищает кэш для Apache, как указано ниже : Opcache - Очистить кэш в PHP5.4 и ниже .

Memcached

Если вы используете memcached, вы должны очистить, перезапустить или убить свою memcached одним из методов:

Как пользователь (один из них):

echo flush_all > /dev/tcp/127.0.0.1/11211
echo flush_all | nc localhost 11211 # Flush Contents Of a Memcached Server

Как корень (один из них):

/etc/init.d/rc.d/memcached restart
service memcached restart
killall memcached # It's automatically restarted on OSX.

Также рекомендуется установить модуль memcached со следующей строкой в ​​вашем файле настроек:

$conf['cache_backends'][] = 'sites/all/modules/contrib/memcache/memcache.inc';

Таким образом, кэши Memcached очищаются на стандартном кеше очистки Drupal.

лакировка

Если вы используете Varnish, рекомендуется установить модуль Varnish и установить следующую строку в файле настроек:

$conf['cache_backends'][] = 'sites/all/modules/contrib/varnish/varnish.cache.inc';

Таким образом, кеш Varnish будет очищаться вместе на кеше Drupal clear.

В качестве альтернативы вы можете использовать curl для очистки страниц вручную:

curl -X PURGE -H "Host: domain.com" http://127.0.0.1/node/123

Подробнее: Как я могу очистить кэш Varnish?

Drupal

Очистить кеш Drupal через drush:

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();'

Вы можете сделать то же самое в / admin / config / development / performance, поскольку иногда кэши пользовательского интерфейса очищаются лучше, чем из CLI.


Вот полезный скрипт оболочки для очистки всех кешей:

#!/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.
kenorb
источник
3
OPCache не будет работать с CLI, например, смотрите объяснение на: stackoverflow.com/questions/17716639/…
LarS
0

мы можем использовать один из следующих методов, чтобы очистить кеш в drupal

1.) Мы можем просто зайти по URL-адресу your_domain / admin / config / development / performance и нажать кнопку очистки кэша.

2.) Если у нас установлен модуль drush, мы можем очистить кеш этой командой drush cc all .

3.) Если у нас есть доступ к базе данных, мы можем очистить кеш с помощью следующих команд (прямой доступ к производственной базе данных категорически не рекомендуется; вместо этого используйте одну из альтернатив, если ваш сайт «живой»)

Кеш TRUNCATE TABLE;

TRUNCATE TABLE cache_block;

TRUNCATE TABLE cache_bootstrap;

TRUNCATE TABLE cache_field;

TRUNCATE TABLE cache_filter;

TRUNCATE TABLE cache_form; // обратите внимание на важные отличия от других таблиц cache_ * - см. дополнительную информацию ниже

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.) Мы также можем написать запрос в файле нашего модуля db_query ("DELETE FROM {cache};");

5.) Мы можем использовать drupal api для очистки кеша, например cache_clear_all ()

6.) Мы также можем очистить кеш с помощью модуля devel, установить модуль devel и включить «Блок разработчика / разработки», этим мы можем очистить кеш

Больше информации о cache_form, которая имеет другое назначение по сравнению с другими таблицами cache_ :

  • В основных документах API для drupal_flush_all_caches () сказано: «Не очищать cache_form - отправка форм в процессе выполнения может прерваться». Это относится только к сайтам с активными пользователями, а не к версиям для разработчиков.

  • другие ручные методы очистки кэшей, описанные в этом посте, не влияют на cache_form

  • если вам нужно уменьшить размер cache_form на рабочем сайте, см. Размер таблицы Cache Form огромен

SynapseIndia
источник