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

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