Как очистить кэширование Drupal:
- без модуль Devel
- не выполнив какое-либо выражение PHP в новом node и т.д.
- не входя в базу данных
Эффективно, как вы инструктируете конечного пользователя очистить свои кеши?
Как очистить кэширование Drupal:
Эффективно, как вы инструктируете конечного пользователя очистить свои кеши?
Когда вы регистрируетесь как администратор (очевидно, что не каждый пользователь сайта должен отключить кеш), должна быть страница в "Администрирование" > "Конфигурация сайта" > "Производительность".
И в нижней части страницы должна быть кнопка (что-то вроде "Очистить кэшированные данные" ), чтобы очистить кеш
Насколько я помню, нет необходимости в Devel для этого, и вам действительно не нужно заходить в базу данных и не запускать собственный PHP-код.
В качестве справочной информации вы можете взглянуть на Как очистить кэш на стороне сервера Drupal
Вы также можете использовать модуль Drush, который позволяет вам использовать командную строку для выполнения популярных команд Drupal, таких как "drush cron" или "очистить кеш очистить".
Если вы хотите очистить кеш от модуля, вы можете использовать следующий код.
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
Очистка по требованию может быть выполнена при администрировании > Конфигурация сайтa > Производительность.
Вы должны настроить задание cron для запуска каждый час (или любой другой интервал по своему усмотрению).
Когда cron запускается на Drupal, все кеши очищаются и перестраиваются без необходимости вручную делать это.
Если этот вопрос относится к тематике, вы должны отключить механизмы кэширования (css/js aggregation), и вам не придется очищать данные кэша при внесении изменений.
Я нашел следующее: http://www.drupalgardens.com/content/clear-all-caches-not-working
Там еще один слой кэширования вокруг сайта, который "очищает все кеши" не влияет, вы правы. Этот слой, который хранит контента для анонимных пользователей.
Если вы хотите обойти кеш для целей тестирования, вы можете добавить junk query в конец вашего пути к сайту. Например, если вы хотел обойти кеш на 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-адресу/флеш-кешу на своем сайте, чтобы очистить кеш. (После того, как вы очистите кеш в последний раз старым способом.)
ШАГ 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" в верхнем правом углу каждой страницы, на которую вы можете щелкнуть. Не стесняйтесь изменять "правильные" и "верхние" суммы (или менять "право" на "левый" или "верхний" на "снизу", чтобы поместить их туда, где вам это нравится. Это позиционирование ссылок работает только в современных браузерах, но оно только для вас, так что это не должно быть проблемой, верно?
Следующий модуль создает элемент меню, доступный только пользователям с разрешением "флеш-кеш", который этот модуль предоставляет на странице обычных прав пользователя.
/**
* 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 "Панель инструментов". Поэтому прямо сейчас нет простого способа очистить кеш, фактически не получив:
admin/config/development/performance
Единственная альтернатива - добавить элемент меню в существующую панель инструментов. Это можно сделать, используя этот модуль, но, как вы можете видеть, все еще требуется небольшая работа. Я заработал, но должен был сделать несколько настроек.
используйте drush и эту команду: drush cc all
Если вы используете Boost для кеширования, вам нужно быть более конкретным:
drush @alias_name cc all