Вопрос

Как мне очистить кеши Drupal:

  • без модуль разработки
  • без запуска какого-либо оператора PHP в новом узле и т.д.
  • не заходя в саму базу данных

Эффективно, как вы даете указание конечному пользователю очистить свои кэши?

Это было полезно?

Решение

Когда вы вошли в систему как администратор (очевидно, что не у каждого пользователя сайта есть возможность очистить кэш), там должна быть страница в "Администрирование> Конфигурация сайта> Производительность".

И в нижней части страницы должна быть кнопка (что-то вроде "Очистить кэшированные данные"), чтобы очистить кэш

Насколько я помню, Devel для этого не нужен, и вам действительно не нужно обращаться к базе данных или запускать какой-то самодельный PHP-код.


В качестве ссылки вы можете взглянуть на Как очистить кэш на стороне сервера Drupal

Другие советы

Вы также можете использовать Драш модуль, который позволяет вам использовать командную строку для выполнения популярных команд Drupal, таких как "drush cron" или "drush cache clear".

Если вы хотите очистить кэш из модуля, вы можете использовать следующий код.

drupal_flush_all_caches();

У меня есть самое простое решение для этого.Установите модуль admin_menu (на самом деле не только для этой цели, установив этот модуль, вы точно не пожалеете об этом, ссылка: http://drupal.org/project/admin_menu).Хорошо, затем в появившемся верхнем выпадающем меню наведите курсор на значок, и появится выпадающее меню, и вы увидите:Меню очистки всех кэшей.Один щелчок - один сброс.Кроме того, вы можете очистить все кэши вместе или выбрать, что нужно очистить:Страницы, меню, темы и т.д.Попробуй, и ты никогда не вернешься назад )

Было бы потрясающе, если бы вы могли просто ДОБИТЬСЯ такого поведения, нажав:
http://drupal.local./admin/settings/performance?op=Clear%20cached%20data
но ты не можешь.
Однако я хочу отметить URL-адрес для сокращения через меню администратора (используйте последнюю часть):
http://drupal.local. /admin/settings/performance

Очистку по требованию можно выполнить в разделе Администрирование > Конфигурация сайта> Производительность.

Вы должны настроить задание cron так, чтобы оно выполнялось каждый час (или с любым интервалом по вашему вкусу).

Когда cron запускается на Drupal, все кэши очищаются и перестраиваются без необходимости в том, чтобы человек делал это вручную.

Если этот вопрос относится к тематизации, вам следует отключить механизмы кэширования (агрегирование css / js), и вам не придется очищать данные кэша при внесении изменений.

Я нашел следующее по адресу: http://www.drupalgardens.com/content/clear-all-caches-not-working

На сайте есть еще один уровень кэширования, на который "очистить все кэши" не влияют, вы правы.Это слой, на котором хранится контент для анонимных пользователей.

Если вы хотите обойти кэш в целях тестирования, вы можете добавить строку нежелательного запроса в конец пути к вашему сайту.Например, если вы хотели обойти кэш на example.drupalgardens.com/foo вы могли бы посетить example.drupalgardens.com/foo?bar=baz или любой другой случайный текст настроить как ?xxxxx=xxxxx.

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

Приведенный выше код предназначен для Drupal 6.

Для Drupal 7 модуль флеш-кэша будет выглядеть следующим образом:

<?php 
/**
 * Implementation of hook_menu()
 */
function flush_cache_menu() {
  $items = array();

  $items['flush-cache'] = array(
  'type' => MENU_NORMAL_ITEM,
  'title' => t('Flush the cache'),
  'description' => 'Flush all website caches to make sure it updates to relect '.
    'your recent changes.',
  'page callback' => 'flush_cache_custom_callback',
  'access callback' => user_access('flush cache'),
  );

  return $items;
}

/**
 * Implementation of hook_permission()
 */
function flush_cache_permission() {
  return array(
    'administer my module' => array(
      'title' => t('flush cache module'),
      'description' => t('Content admin flush cache.'),
    ),
  );
}

/**
 * Function that flushes the cache
 */
function flush_cache_custom_callback() {
  drupal_flush_all_caches();
  return 'Caches were flushed.';
}

Примечание:что затем вы очистите его, перейдя к:

sitename.com/flush-cache

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

Это предпочтительнее, когда вы не хотите, чтобы ваш клиент получал доступ к меню администратора, но вы все еще хотите, чтобы он мог очистить кеш.

ДЕРЖИ, ТЫ ИДЕШЬ:

Мне пришлось деинсталлировать модуль "devel" (он был несовместим со специальными пунктами меню, которые мне были нужны хуже), поэтому я создал свой собственный.

Везде, где вы видите MODULENAME, замените его именем вашего модуля.

ШАГ 1:Добавьте в любой модуль (предпочтительно в один из ваших пользовательских модулей) в HOOK_MENU, перед строкой "return $items":

// short cut for flushing the caches:
$items['flush-cache'] = array(
  'type' => MENU_CALLBACK,
  'title' => t('Flush the cache'),
  'description' => 'MODULENAME Custom Cache Flush',
  'page callback' => 'MODULENAME_flush_cache',
  'access callback' => TRUE,
);

ШАГ 2:Теперь, в том же файле модуля, где он не находится "внутри" какой-либо другой функции, добавьте:

/**  Page callback  **/
function MODULENAME_flush_cache() {
  drupal_flush_all_caches();
  return 'Caches were flushed.';
}

Теперь вы можете просто перейти по URL-адресу "/flush-cache" на вашем сайте, чтобы очистить кэш.(После того, как вы очистите кэш в последний раз по-старому.)

ШАГ 3:Если вы хотите, чтобы это было ДЕЙСТВИТЕЛЬНО удобно, добавьте следующее в свой файл page.tpl.php.Вы можете поместить это практически куда угодно между <body> и </body>.ПРИМЕЧАНИЕ:$my_is_test - это переменная, которую я использую, которая имеет значение TRUE в моей тестовой системе и FALSE в рабочей.Если у вас нет чего-то подобного, замените его на TRUE или FALSE, чтобы включить или выключить его:

<?php if ($my_is_test): ?>
<a style="text-align:left; position:absolute; right:2px; top:20px;" href="<?=$base_path?>flush-cache" onclick="this.innerHTML = '<b><blink><big>Wait...</big></blink></b>';">flush</a>
<? endif; ?>

И вуаля!У вас есть ссылка "промыть" в правом верхнем углу каждой страницы, на которую вы можете нажать.Не стесняйтесь изменять "правое" и "верхнее" значения (или измените "правое" на "левое" или "верхнее" на "нижнее", чтобы разместить их там, где вам нравится.Такое расположение ссылок работает только в современных браузерах, но это только для вас, так что это не должно быть проблемой, верно?

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

/**
 * Implementation of hook_menu()
 */
function flush_cache_menu() {
  $items = array();

  $items['flush-cache'] = array(
  'type' => MENU_NORMAL_ITEM,
  'title' => t('Flush the cache'),
  'description' => 'Flush all website caches to make sure it updates to relect '.
    'your recent changes.',
  'page callback' => 'flush_cache_custom_callback',
  'access callback' => user_access('flush cache'),
  );

  return $items;
}

/**
 * Implementation of hook_perm()
 */
function flush_cache_perm() {
  return array('flush cache');
}

/**
 * Function that flushes the cache
 */
function flush_cache_custom_callback() {
  drupal_flush_all_caches();
  return 'Caches were flushed.';
}

В Drupal 8 модуль меню администратора еще не совсем готов к использованию.И, вероятно, он будет заменен на Drupal "Toolbar".Так что прямо сейчас нет простого способа очистить кеш, фактически не переходя к:

admin/config/development/performance

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

используйте drush и эту команду:drush cc все

Если вы используете Boost для кэширования, вам нужно быть более конкретным:

drush @alias_name cc all
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top