Як повністю відключити кешування?


26

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

Як його повністю відключити?

Відповіді:


21

Тематичні функції обробляються реєстром тем: відновлення (або ще гірше, вимкнення) всіх кешів вашого веб-сайту, щоб вибрати нову тематичну функцію, не є зайвою та зайвою.

Що ви можете зробити, це використовувати модуль Devel для відновлення реєстру вашої теми при кожному перезавантаженні сторінки. Після встановлення перейдіть до Конфігурація → Розробка → Налаштування 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 з живого та інсценування до мого середовища розробки, не турбуючись. про використання неправильних налаштувань бази даних, випадковому підштовхуванні налаштувань розробника до життя тощо.

settings.php:

if (file_exists(__DIR__ . '/settings.local.php')) {
  require_once __DIR__ . '/settings.local.php';
}

4
Ви можете скористатися тим самим трюком, щоб вимкнути кешування на кошик. Напр. $conf['cache_class_cache_metatag'] = 'DrupalFakeCache';
Альфред Армстронг

4
Це має бути прийнятою відповіддю, оскільки прийнятий описує лише те, як відключити кеш реєстру теми, а не всі кеші
mastazi

10

Ви не можете включити з усіх кешування повністю. І якщо ви на самому справі, було б сповільнити ваш прогрес так набагато більше. Розглянемо час, який потрібен для очищення кеша, саме так виглядає кожне завантаження кожної сторінки.

Стільки гачків працює для збирання інформації про доступні сутності, поля, форми, реалізовані гачки тощо, які потрібно виконати лише один раз на даний момент, ви не хочете цього запобігати.

Коли ви звикнете до Drupal, незабаром ви дізнаєтеся, які речі потрібні для кешу, і, ймовірно, ви знайдете дружбу або з ярликом меню адміністратора drush cc all, і це вже не буде проблемою.


Погодилися, як тільки ти зрозумієш, що для більшості нових гачків потрібен кеш, перш ніж визнати його плавне плавання звідти назовні! :)
Алекс Вебер

2
Чесно кажучи, через кілька місяців розвитку Drupal я все ще вважаю це проблемою. Я вважаю, що розвиваючи локальну швидкість не важливо, у вас немає декількох користувачів, що надсилають одночасні запити. У більшості інших фреймворків (Django, Symfony і т. Д.), Де кеш вимкнено під час локальної розробки - це доступний варіант, я не бачу, чому я не можу цього мати і в Drupal. Щодня у мене є хоча б один екземпляр, коли щось не працює, і причина полягає в тому, що я забув очистити кеш, це трапляється дуже часто, і це мене дійсно турбує.
mastazi

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