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

Таблица 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,
    которая хранит произвольные кешированные данные
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить