Таблица 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,
которая хранит кеш конфигурации