Таблица cache_container
Таблица cache_container является одной из ключевых таблиц кеширования в Drupal. В ней хранится предварительно скомпилированная и оптимизированная версия контейнера зависимостей (Dependency Injection Container), которая включает определения всех сервисов и параметров системы.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
cid |
varchar(255) |
Уникальный идентификатор записи кеша. Для основной записи контейнера всегда имеет значение container.
|
data |
longblob |
Сериализованные данные контейнера. Содержит скомпилированный PHP код с определениями сервисов, включая их классы, аргументы, фабрики, теги и свойства. |
expire |
int |
Время истечения срока действия записи кеша. Значение 0 означает, что запись не имеет срока годности (действует до явной инвалидации). Значение -1 (PERMANENT) также означает постоянное хранение.
|
created |
decimal(14, 3) |
Временная метка создания записи кеша с микросекундами. |
serialized |
smallint |
Флаг, указывающий на то, что данные в поле data были сериализованы. Для cache_container обычно имеет значение 1 или 0, в зависимости от бэкенда кеширования.
|
tags |
longtext |
Список тегов кеша, связанных с этой записью, в формате сериализованного массива. Для контейнера обычно содержит теги, которые позволяют инвалидировать кеш при изменении служб или модулей. |
checksum |
varchar(255) |
Контрольная сумма для проверки целостности тегов. Используется механизмом кеширования для валидации. |
Как это работает
При первой установке Drupal или после очистки кеша система собирает определения всех сервисов из файлов *.services.yml всех установленных модулей, тем и профиля. Этот процесс называется "компиляция контейнера".
Скомпилированный контейнер, который представляет собой оптимизированный PHP код, сериализуется и сохраняется в таблице cache_container с cid = 'container'. При последующих запросах Drupal загружает этот предварительно скомпилированный контейнер из кеша, что позволяет избежать дорогостоящего процесса парсинга YAML файлов и компиляции на каждом запросе.
Инвалидация (очистка) этого кеша происходит автоматически при установке, обновлении или удалении модуля, изменении темы или при ручной очистке кеша через административный интерфейс или Drush команду drush cache:rebuild.
Использование cache_container критически важно для производительности Drupal, так как процесс компиляции контейнера без кеширования может занимать значительное время (несколько секунд) на каждом запросе.
Пример SQL-запроса
Посмотреть информацию о записи кеша контейнера можно следующим запросом:
SELECT cid, created, expire, LENGTH(data) as data_size
FROM cache_container
WHERE cid = 'container';
Смотрите также
-
таблицу
cache_default,
которая хранит данные кеша по умолчанию -
таблицу
cache_discovery,
которая хранит кеш обнаружения плагинов и расширений -
таблицу
cache_render,
которая хранит кеш отображаемых элементов -
таблицу
cache_config,
которая хранит кеш конфигурации системы