Здравствуйте. Очень волнует низкая скорость работы моего друпал сайта на относительно хорошем хостинге. Сталкивались с этим все. Вопросы:
- Минимальное время жизни кеша. Что означает выбор "нет"? Кэширование отключено? Что значит время жизни кэша в 1 час?
- Страницы кэшируются только для незарегистрированных пользователей или нет? Есть какая-то разница? Есть ли модули чтобы кэшировались для всех?
- Devel. Поставил. Как узнать какие модули и как сильно грузят базу?
- Допустим, поставил я модуль ubercart, включил его. Потом решил удалить, выключил, стер из каталога modules. Из базы данных стоит удалять все таблицы с префиксом uc_?
Ответы мне должны многое прояснить. Скорость работы сейчас вообще никуда не годится...
Комментарии
Напишу то в чем уверен.
1 час - значит все странички к которым было обращение будут в кэше в течении часа, и обращений к БД для сбора страницы из составляющих не будет. Если прошло более часа и к странице заново обратились, то только тогда она будет перекэширована.
Таблицы можно удалять. Если к ним не будет уже никаких обращений.
А если к ней обращаются каждые 5 минут? Она будет доставаться из кэша? А на 60й минуте все равно сформируется из базы несмотря на то, что к ней только что обратились?
Нет, час после обращения.
я так понимаю что время хранения кэша один час (timestamp), как только он прошёл (c момента помещения страницы в кэш - первое обращение, а не с момента последнего обращения), при первом же обращении страница заново соберется.
sadmin пишет час после обращения. А если страницу посещают каждые 5 минут, пользователь вообще не увидит новой информации?
relogger, не совсем понял, что вы написали.
Еще возник вопрос: а если на странице появляются комментарии, а друпал вообще предназначен для комьюнити сайтов, пользователь их тоже не увидит? На сайте Drupal.ru кэширование включено?
При написании таких сообщений стоит указывать версию drupal. Видимо речь идет о 5ке.
Кеширование в ней предусмотрено для страниц, которые просматривают анонимные посетители. Время жизни - это сколько страница будет храниться в кеше после сохранения, но при отправке коментариия или публикации нового материала - весь кеш очищается ибо могут измениться блоки и страницы (например блок последние комментарии, страница трекер ну и главная). Если у вас не часто добавляются новые материалы или коментарии - эффективность кеша высока.
На drupal.ru кеш страниц и кеш фильтров работают примерно 55% попаданий, кеширование блоков (доп.подуль) дает в районе 95-99% попаданий. Статистики по кешу меню и таблицы cache пока нет возможности получить ибо лежат они в оперативной памяти eaccelerator.
В общем, как я понял с вашего ответа, хуже в любом случае не будет, если кэширование включено (пользователь увидит новый комментарий). Какое ставить минимальное время жизни, если обновляется страница/добавляются комментарии каждые 5 минут/1 час/1 день/раз в месяц?
У меня 6я версия друпала.
Если устанавливается время жизни, то анонимные пользователи не увидят новых страниц именно столько, сколько будет указано.
Если материала и коменты публикуются не очень часто, то можно не выставлять - очистка всего кеша будет производиться при публикации нового или правке/удалении. Вроде так...
andypost@drupal.org, я правильно понимаю, что если просто включить кэширование на 6.х в режиме "нормальный" и при этом не ставить время жизни кэша, то:
1)кэш каждой ноды будет добавляться в базу при первом обращении к этой ноде;
2)кэш будет храниться в базе сколь угодно долго, пока нода не будет изменена.
?? это так?
И ещё один вопрос.
В 6.х есть стандартное кэширование блоков - он работает по такому же принципу, как и кэширование страниц? В какой момент кэш блока строится заново?
кстати, в БД у 6.х есть таблица blocks с такой структурой:
bid
module
delta
theme
status
weight
region
custom
throttle
visibility
pages
title
cache
так вот у меня на тестовой установке в последнем столбце 'cache' значения варьируются от '4' до '-1'....
Кто-нибудь может сказать, на что влияют эти значения... и... самое главное - можно ли чтобы определённые блоки не кэшировались?!
Именно в этой таблице хранятся настройки кеширования для блоков - долго объяснять, но блоки могут кешироваться разными способами и именно эти цифры определяют кешировать ли и как!
По кешу страниц
<?php cache_set($base_root . request_uri(), $data, 'cache_page', CACHE_TEMPORARY, drupal_get_headers()); ?>
Страницы будут очищаться при прогоне крона
andypost@drupal.org спасибо, буду разбираться!
Основное, чего хочется добиться - так это что бы можно было сделать отдельный блок на странице, который не будет кэшироваться.
Смотрите в block.module там в самом начале есть define для констант.