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

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