НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
98 of 182 menu

Таблица cache_render

Таблица cache_render является одной из ключевых таблиц кеширования в Drupal. Она хранит полностью отрисованные HTML-элементы, такие как блоки, результаты работы представлений (Views), формы и другие рендер-массивы. Использование этой таблицы значительно снижает нагрузку на сервер и ускоряет время ответа сайта.

Поля

Поле Тип данных Описание
cid varchar(255) Уникальный идентификатор кеш-записи (Cache ID). Формируется на основе контекста рендеринга (например, ID блока, языка, темы).
data longblob Сериализованные данные кеша. Здесь хранится готовый HTML-код или рендер-массив.
expire int Время истечения срока действия кеш-записи в формате Unix timestamp. Значение 0 означает, что запись никогда не истекает.
created decimal(14, 3) Время создания кеш-записи в формате Unix timestamp с микросекундами.
serialized smallint Флаг, указывающий на то, что данные в поле data были сериализованы (1) или нет (0).
tags longtext Список тегов кеша, разделенных символом перевода строки \n. Теги используются для инвалидации (признания недействительными) групп связанных кеш-записей.
checksum varchar(255) Контрольная сумма тегов, используемая для быстрой проверки актуальности кеш-записи при её получении.

Как это работает

Когда Drupal впервые рендерит элемент (например, блок "Последние комментарии"), он проверяет, есть ли его готовое представление в cache_render. Поиск осуществляется по уникальному cid, который строится с учетом всех параметров, влияющих на внешний вид элемента (язык, тема оформления, права пользователя и т.д.).

Если запись найдена, не истек её срок жизни (expire) и ни один из её тегов (tags) не был инвалидирован, то система сразу возвращает готовый HTML из поля data, пропуская тяжелые вычисления и запросы к базе данных.

Если подходящей записи в кеше нет (кеш-промах), Drupal заново строит рендер-массив, преобразует его в HTML и сохраняет результат в cache_render для последующих запросов.

Инвалидация кеша происходит при изменении контента на сайте. Например, при сохранении новой ноды система инвалидирует тег node_list. Все кеш-записи в cache_render, содержащие этот тег, будут считаться устаревшими и удаляться при следующем обращении или в процессе cron.

Пример SQL-запроса

Посмотреть содержимое кеша для определенного CID можно запросом:

SELECT cid, created, expire, serialized, LENGTH(data) as data_size, tags FROM cache_render WHERE cid LIKE 'block:my_custom_block%' ORDER BY created DESC LIMIT 5;

Смотрите также

  • таблицу cache_default,
    которая является общим кешем для данных
  • таблицу cache_discovery,
    которая хранит кеш обнаружения плагинов и расширений
  • таблицу cache_dynamic_page_cache,
    которая хранит кеш для динамических страниц
  • таблицу cache_config,
    которая хранит кеш конфигурации
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить