Вопросы по кэшированию и производительности. Использование Devel.

Главные вкладки

Аватар пользователя digital_sword digital_sword 17 июля 2008 в 14:48

Здравствуйте. Очень волнует низкая скорость работы моего друпал сайта на относительно хорошем хостинге. Сталкивались с этим все. Вопросы:

  1. Минимальное время жизни кеша. Что означает выбор "нет"? Кэширование отключено? Что значит время жизни кэша в 1 час?
  2. Страницы кэшируются только для незарегистрированных пользователей или нет? Есть какая-то разница? Есть ли модули чтобы кэшировались для всех?
  3. Devel. Поставил. Как узнать какие модули и как сильно грузят базу?
  4. Допустим, поставил я модуль ubercart, включил его. Потом решил удалить, выключил, стер из каталога modules. Из базы данных стоит удалять все таблицы с префиксом uc_?

Ответы мне должны многое прояснить. Скорость работы сейчас вообще никуда не годится...

Комментарии

Аватар пользователя relogger relogger 17 июля 2008 в 17:30

Напишу то в чем уверен.

1 час - значит все странички к которым было обращение будут в кэше в течении часа, и обращений к БД для сбора страницы из составляющих не будет. Если прошло более часа и к странице заново обратились, то только тогда она будет перекэширована.

Таблицы можно удалять. Если к ним не будет уже никаких обращений.

Аватар пользователя digital_sword digital_sword 17 июля 2008 в 18:07

А если к ней обращаются каждые 5 минут? Она будет доставаться из кэша? А на 60й минуте все равно сформируется из базы несмотря на то, что к ней только что обратились?

Аватар пользователя relogger relogger 17 июля 2008 в 19:38

я так понимаю что время хранения кэша один час (timestamp), как только он прошёл (c момента помещения страницы в кэш - первое обращение, а не с момента последнего обращения), при первом же обращении страница заново соберется.

Аватар пользователя digital_sword digital_sword 17 июля 2008 в 22:02

sadmin пишет час после обращения. А если страницу посещают каждые 5 минут, пользователь вообще не увидит новой информации?
relogger, не совсем понял, что вы написали.
Еще возник вопрос: а если на странице появляются комментарии, а друпал вообще предназначен для комьюнити сайтов, пользователь их тоже не увидит? На сайте Drupal.ru кэширование включено?

Аватар пользователя andypost@drupal.org andypost@drupal.org 18 июля 2008 в 0:29

При написании таких сообщений стоит указывать версию drupal. Видимо речь идет о 5ке.
Кеширование в ней предусмотрено для страниц, которые просматривают анонимные посетители. Время жизни - это сколько страница будет храниться в кеше после сохранения, но при отправке коментариия или публикации нового материала - весь кеш очищается ибо могут измениться блоки и страницы (например блок последние комментарии, страница трекер ну и главная). Если у вас не часто добавляются новые материалы или коментарии - эффективность кеша высока.

На drupal.ru кеш страниц и кеш фильтров работают примерно 55% попаданий, кеширование блоков (доп.подуль) дает в районе 95-99% попаданий. Статистики по кешу меню и таблицы cache пока нет возможности получить ибо лежат они в оперативной памяти eaccelerator.

Аватар пользователя digital_sword digital_sword 18 июля 2008 в 10:37

В общем, как я понял с вашего ответа, хуже в любом случае не будет, если кэширование включено (пользователь увидит новый комментарий). Какое ставить минимальное время жизни, если обновляется страница/добавляются комментарии каждые 5 минут/1 час/1 день/раз в месяц?
У меня 6я версия друпала.

Аватар пользователя andypost@drupal.org andypost@drupal.org 13 августа 2008 в 4:37

Если устанавливается время жизни, то анонимные пользователи не увидят новых страниц именно столько, сколько будет указано.
Если материала и коменты публикуются не очень часто, то можно не выставлять - очистка всего кеша будет производиться при публикации нового или правке/удалении. Вроде так...

Аватар пользователя sergej-serov sergej-serov 13 августа 2008 в 10:28

andypost@drupal.org, я правильно понимаю, что если просто включить кэширование на 6.х в режиме "нормальный" и при этом не ставить время жизни кэша, то:
1)кэш каждой ноды будет добавляться в базу при первом обращении к этой ноде;
2)кэш будет храниться в базе сколь угодно долго, пока нода не будет изменена.
?? это так?

И ещё один вопрос.
В 6.х есть стандартное кэширование блоков - он работает по такому же принципу, как и кэширование страниц? В какой момент кэш блока строится заново?

Аватар пользователя sergej-serov sergej-serov 13 августа 2008 в 19:20

кстати, в БД у 6.х есть таблица blocks с такой структурой:
bid
module
delta
theme
status
weight
region
custom
throttle
visibility
pages
title
cache

так вот у меня на тестовой установке в последнем столбце 'cache' значения варьируются от '4' до '-1'....
Кто-нибудь может сказать, на что влияют эти значения... и... самое главное - можно ли чтобы определённые блоки не кэшировались?!

Аватар пользователя andypost@drupal.org andypost@drupal.org 13 августа 2008 в 18:37

"sergej-serov" wrote:
sergej-serov

Именно в этой таблице хранятся настройки кеширования для блоков - долго объяснять, но блоки могут кешироваться разными способами и именно эти цифры определяют кешировать ли и как!

По кешу страниц
<?php cache_set($base_root . request_uri(), $data, 'cache_page', CACHE_TEMPORARY, drupal_get_headers()); ?>
Страницы будут очищаться при прогоне крона

Аватар пользователя sergej-serov sergej-serov 14 августа 2008 в 17:37

andypost@drupal.org спасибо, буду разбираться!
Основное, чего хочется добиться - так это что бы можно было сделать отдельный блок на странице, который не будет кэшироваться.