Как полностью отключить кеширование?

26

Я занимаюсь разработкой сайта в Drupal 7, и кэширование значительно замедляет мою работу. Например, у меня была функция темы для формы. Я был озадачен, почему это не работает. Пока я не очистил кеш и все исправили.

Как его полностью отключить?

user4035
источник

Ответы:

21

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

Что вы можете сделать, это использовать модуль Devel для перестройки реестра вашей темы при каждой перезагрузке страницы. После установки перейдите в Конфигурация → Разработка → Настройки разработки. Там отметьте «Перестроить реестр тем при каждой загрузке страницы» и нажмите кнопку «Сохранить конфигурацию». Не забудьте снять его (или, что еще лучше, полностью отключить Devel), когда закончите разработку.


источник
это только реестр тем.
Эндрю Уэлч
2
Вопрос в том, "как его полностью отключить?" это только одна часть этого
SeanJA
29

Вы можете заменить стандартный кеш-сервер на тот, который на самом деле ничего не делает. Просто добавьте это в файл settings.php:

if (!class_exists('DrupalFakeCache')) {
  $conf['cache_backends'][] = 'includes/cache-install.inc';
}
// Default to throwing away cache data.
$conf['cache_default_class'] = 'DrupalFakeCache';
// Rely on the DB cache for form caching - otherwise forms fail.
$conf['cache_class_cache_form'] = 'DrupalDatabaseCache';

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

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

settings.php:

if (file_exists(__DIR__ . '/settings.local.php')) {
  require_once __DIR__ . '/settings.local.php';
}
TwoD
источник
4
Вы можете использовать тот же трюк, чтобы отключить кэширование для каждого бина. Например. $conf['cache_class_cache_metatag'] = 'DrupalFakeCache';
Альфред Армстронг
4
Это должен быть принятый ответ, так как принятый только описывает, как отключить кэш реестра темы, а не все кеши
mastazi
10

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

Для построения информации о доступных сущностях, полях, формах, реализованных хуках и т. Д. Работает так много хуков, которые нужно выполнять только один раз, и вы не хотите этого предотвращать.

Когда вы привыкнете к Drupal, вы скоро узнаете, какие вещи требуют очистки кеша, и, вероятно, подружитесь с ярлыком меню администратора или с ним drush cc all, и это больше не будет проблемой.

Letharion
источник
Согласитесь, как только вы поймете, что большинству новых хуков нужно очистить кеш, прежде чем его можно будет легко увидеть! :)
Алекс Вебер
2
Честно говоря, после нескольких месяцев разработки Drupal я все еще нахожу это проблемой. Я считаю, что хотя локальная разработка не важна, у вас нет нескольких пользователей, отправляющих параллельные запросы. В большинстве других фреймворков (Django, Symfony и т. Д.) Отключение кеша при локальной разработке является легкодоступным вариантом, я не понимаю, почему я не могу этого сделать и в Drupal. Каждый день у меня есть по крайней мере один случай, когда что-то не работает, и причина в том, что я забыл почистить кеш, это происходит очень часто, и это действительно беспокоит меня.
Мастази