Таблица cache_block
Таблица cache_block является одной из таблиц кеширования в Drupal и отвечает за хранение подготовленных данных для блоков. Система кеширования блоков позволяет значительно сократить время генерации страниц, особенно для сложных или часто запрашиваемых блоков.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
cid |
varchar(255) |
Первичный ключ. Уникальный идентификатор кеш-записи (Cache ID). Формируется на основе контекста блока: модуля, дельты, темы, языковой привязки и других параметров. |
data |
longblob |
Сериализованные данные кеша. Может содержать готовый HTML-вывод блока, массив данных для его рендеринга или любую другую информацию, которую модуль посчитал нужным закешировать. |
expire |
int |
Время истечения срока действия кеш-записи в формате Unix timestamp. Значение 0 означает, что запись не имеет срока годности. Значение -1 означает, что запись истекла и должна быть считана как несуществующая.
|
created |
int |
Время создания кеш-записи в формате Unix timestamp. |
serialized |
smallint |
Флаг, указывающий, были ли данные в поле data сериализованы. 1 - данные сериализованы, 0 - нет.
|
tags |
longtext |
Список тегов кеша, разделенных переводом строки. Теги используются для инвалидации (признания недействительными) групп кеш-записей. Например, при обновлении ноды все кеш-записи с тегом node:1 будут очищены.
|
checksum |
varchar(255) |
Контрольная сумма, используемая для проверки целостности тегов при инвалидации кеша. |
Как это работает
Когда Drupal обрабатывает запрос страницы, для каждого блока на странице генерируется уникальный cid на основе его контекста (какой модуль его предоставляет, ID блока, тема оформления, язык и т.д.). Система сначала проверяет наличие валидной записи для этого cid в таблице cache_block.
Если запись найдена и её срок действия (expire) не истек, данные десериализуются и используются для отображения блока без выполнения дорогостоящей логики его построения (запросов к базе данных, сложных вычислений).
Если кеш отсутствует или устарел, выполняется стандартная процедура построения блока (вызывается соответствующая функция-обработчик), результат которой сериализуется и сохраняется в cache_block для последующих запросов.
Теги (tags) позволяют точечно очищать кеш. Например, при сохранении комментария система может инвалидировать все кеш-записи с тегом node:{nid}, чтобы обновить блоки, связанные с этой нодой, не очищая весь кеш блоков полностью.
Пример SQL-запроса
Посмотреть все кеш-записи для блока основной навигации в теме Bartik можно запросом:
SELECT cid, created, expire
FROM cache_block
WHERE cid LIKE '%system%navigation%bartik%';
Смотрите также
-
таблицу
cache_bootstrap,
которая хранит критически важный для загрузки кеш -
таблицу
cache_page,
которая хранит кеш целых страниц -
таблицу
cache_render,
которая хранит кеш элементов рендера -
таблицу
cache_data,
которая хранит произвольные кешированные данные