Подтвердить что ты не робот

Как очистить Drupal Cache (без Devel)

Как очистить кэширование Drupal:

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

Эффективно, как вы инструктируете конечного пользователя очистить свои кеши?

4b9b3361

Ответ 1

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

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

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


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

Ответ 2

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

Ответ 3

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

drupal_flush_all_caches();

Ответ 4

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

Ответ 5

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

Ответ 6

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

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

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

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

Ответ 7

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

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

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

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

Ответ 8

Вышеприведенный код предназначен для 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

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

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

Ответ 9

ЗДЕСЬ ВЫ:

Мне пришлось снять установку модуля "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-адресу/флеш-кешу на своем сайте, чтобы очистить кеш. (После того, как вы очистите кеш в последний раз старым способом.)

ШАГ 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; ?>

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

Ответ 10

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

/**
 * 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.';
}

Ответ 11

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

admin/config/development/performance

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

Ответ 12

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

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

drush @alias_name cc all