Таблица cache_discovery
Таблица cache_discovery является одной из ключевых таблиц кеширования в Drupal. Она хранит результаты дорогостоящих операций по обнаружению системных компонентов, что значительно ускоряет последующие запросы к этим данным.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
cid |
varchar(255) |
Уникальный идентификатор кеш-записи (Cache ID). Формируется на основе типа кешируемых данных и их уникальных характеристик. |
data |
blob |
Сериализованные данные, которые были закешированы. Могут содержать массивы, объекты или другие структуры данных. |
expire |
int |
Время истечения срока действия кеш-записи в формате Unix timestamp. Значение 0 означает, что запись никогда не истекает.
|
created |
decimal(14, 3) |
Время создания кеш-записи в формате Unix timestamp с микросекундной точностью. |
serialized |
smallint |
Флаг, указывающий на то, что данные были сериализованы перед сохранением (1 - сериализованы, 0 - не сериализованы).
|
tags |
longtext |
Список тегов, связанных с кеш-записью, в формате сериализованного массива. Используется для инвалидации групп записей. |
checksum |
varchar(255) |
Контрольная сумма тегов, используемая для оптимизации операций инвалидации кеша. |
Как это работает
Drupal использует таблицу cache_discovery для хранения результатов "тяжелых" операций обнаружения, которые выполняются во время bootstrap процесса и при очистке кеша. Это включает информацию о плагинах, хуках, темах, обработчиках маршрутов и других расширениях системы.
При первой загрузке компонента система выполняет полное сканирование кода, анализирует аннотации и собирает метаданные. Результаты этой операции сериализуются и сохраняются в cache_discovery с уникальным cid. При последующих запросах эти данные извлекаются из кеша, что исключает необходимость повторного анализа кода.
Инвалидация кеша discovery происходит при очистке кеша через административный интерфейс или с помощью Drush-команд. Система использует теги (tags) для группировки связанных записей и их массового удаления при изменении соответствующего компонента системы.
Типичные примеры данных, хранящихся в этой таблице: информация о всех плагинах системы, обнаруженные хуки модулей, зарегистрированные темы и их регионы, обработчики маршрутов и многое другое.
Пример SQL-запроса
Посмотреть все записи кеша discovery для определенного тега можно следующим запросом:
SELECT cid, created, expire
FROM cache_discovery
WHERE tags LIKE '%plugin%'
ORDER BY created DESC
LIMIT 10;
Смотрите также
-
таблицу
cache_bootstrap,
которая хранит кеш данных начальной загрузки системы -
таблицу
cache_render,
которая предназначена для кеширования рендеринг-массивов -
таблицу
cache_data,
которая используется для общего кеширования данных -
таблицу
cache_container,
которая хранит кеш dependency injection контейнера