Таблица cache_default
Таблица cache_default является стандартной таблицей для хранения кешированных данных в Drupal. Она используется различными модулями и системой Drupal для временного хранения предварительно рассчитанных или часто запрашиваемых данных, что значительно ускоряет работу сайта.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
cid |
varchar(255) |
Уникальный идентификатор кеш-записи (Cache ID). Определяет, какие данные хранятся в записи. |
data |
blob |
Сериализованные данные, которые были закешированы. Могут содержать массивы, объекты или другие структуры данных. |
expire |
int |
Время истечения срока действия кеш-записи в формате Unix timestamp. Значение 0 означает, что запись никогда не истекает.
|
created |
int |
Время создания кеш-записи в формате Unix timestamp. |
serialized |
smallint |
Флаг, указывающий на то, что данные были сериализованы перед сохранением. 1 - данные сериализованы, 0 - не сериализованы.
|
tags |
text |
Теги кеша, разделенные пробелами. Используются для инвалидации групп связанных кеш-записей. |
checksum |
varchar(255) |
Контрольная сумма тегов, используемая для оптимизации проверки актуальности кеш-записей. |
Как это работает
Drupal использует систему кеширования для хранения результатов тяжелых вычислений, запросов к базе данных или рендеринга элементов. Когда модулю или теме необходимо сохранить данные в кеше, он использует функцию \Drupal::cache() с параметром default для получения объекта кеша, который работает с таблицей cache_default.
Каждая кеш-запись идентифицируется уникальным cid, который обычно строится на основе контекста данных (например, theme_registry:stark для реестра темы Stark). Данные сериализуются и сохраняются в поле data вместе с временем expiration и тегами.
При запросе данных система сначала проверяет наличие актуальной записи в кеше. Если запись существует и не expired, данные десериализуются и возвращаются без выполнения дорогостоящих операций. Это значительно снижает нагрузку на сервер и ускоряет время ответа сайта.
Система тегов позволяет инвалидировать группы связанных кеш-записей. Например, при обновлении ноды все кеш-записи с тегом node:1 могут быть автоматически удалены, обеспечивая актуальность данных.
Пример SQL-запроса
Посмотреть все активные кеш-записи для определенного модуля можно следующим запросом:
SELECT cid, created, expire
FROM cache_default
WHERE cid LIKE 'my_module:%'
AND (expire = 0 OR expire > UNIX_TIMESTAMP());
Смотрите также
-
таблицу
cache_render,
которая хранит кешированные отрендеренные элементы -
таблицу
cache_config,
которая предназначена для кеширования конфигурации -
таблицу
cache_discovery,
которая хранит кеш обнаружения плагинов и расширений -
таблицу
cache_container,
которая содержит кешированную информацию о dependency injection container