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

Таблица cache_field

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

Поля

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

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

Когда Drupal впервые обрабатывает данные поля (например, загружает значения поля или применяет к ним форматтер), выполняется относительно сложная работа: загрузка конфигурации поля, его настроек отображения, рендеринг элементов. Результат этой работы сериализуется и сохраняется в таблице cache_field с уникальным cid.

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

Записи в кеше становятся неактуальными (инвалидируются) при изменении связанных данных. Это обеспечивается системой тегов (tags). Например, запись кеша, содержащая отрендеренное поле ноды, будет помечена тегами этой ноды и этого поля. При обновлении ноды или конфигурации поля запускается процесс инвалидации, который находит и удаляет все записи кеша, связанные с соответствующими тегами.

Автоматическая очистка кеша (например, по расписанию cron) удаляет записи с истекшим сроком действия (expire < текущего времени) для поддержания размера таблицы в разумных пределах.

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

Посмотреть все активные записи в кеше полей для определенного тега (например, для ноды с ID 42) можно следующим запросом:

SELECT cid, created, expire FROM cache_field WHERE tags LIKE '%node:42%' AND expire > UNIX_TIMESTAMP();

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

  • таблицу cache_data,
    которая является общей таблицей кеширования данных
  • таблицу cache_bootstrap,
    которая хранит кеш для критически важных данных начальной загрузки
  • таблицу cache_render,
    которая предназначена для кеширования рендер-массивов и HTML-вывода
  • таблицу cache_discovery,
    которая кеширует обнаруженные метаданные (плагины, хуки)
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить