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

Таблица cache

Таблица cache является одной из основных таблиц кеширования в Drupal. Она используется для временного хранения предварительно рассчитанных или полученных данных, чтобы избежать повторных дорогостоящих операций при повторных запросах. Это значительно повышает производительность сайта.

Поля

Поле Тип данных Описание
cid varchar(255) Первичный ключ. Уникальный идентификатор кеш-записи (Cache ID). Обычно представляет собой хеш или уникальное имя, по которому можно получить данные.
data longblob Сериализованные данные, которые были сохранены в кеше. Могут быть массивом, объектом, строкой и т.д.
expire int Время истечения срока действия кеш-записи в формате Unix timestamp. Значение 0 означает, что запись никогда не истекает. Значение -1 (CACHE_PERMANENT) означает, что элемент кеша не будет удален при стандартной очистке просроченных данных.
created int Время создания кеш-записи в формате Unix timestamp.
serialized smallint Флаг, указывающий, были ли данные сериализованы перед сохранением. 0 - не сериализованы, 1 - сериализованы.
tags longtext Пространство для хранения тегов кеша, разделенных переводом строки. Теги используются для инвалидации (признания недействительными) групп связанных кеш-записей.
checksum varchar(255) Контрольная сумма тегов, используемая для проверки целостности данных при инвалидации по тегам.

Как это работает

Когда модулю или ядру Drupal требуется сохранить данные для повторного использования, они используют кеш-API. Данные вместе с уникальным идентификатором (cid) и, опционально, тегами и временем жизни сохраняются в таблице cache.

При последующих запросах система сначала проверяет наличие актуальной записи в кеше по её cid. Если запись найдена и её срок действия (expire) не истек, данные десериализуются и возвращаются, что позволяет избежать повторного выполнения сложной логики или запросов к базе данных.

Управление кешем осуществляется через механизм инвалидации. Записи могут быть удалены по истечении срока их действия (expire), явно удалены по их идентификатору (cid) или инвалидированы по тегам (tags). Например, при сохранении нового материала узел (node) помечается тегом node:1. Все кеш-записи, связанные с этим тегом (например, кеш отображения этого узла, кеш списков, где он присутствует), будут автоматически очищены, чтобы обеспечить актуальность данных на страницах.

Для ещё большей производительности Drupal может использовать альтернативные бэкенды кеширования, такие как Redis, Memcache или APCu. В этих случаях таблица cache может использоваться реже или не использоваться вовсе, но её структура и API остаются стандартом.

Пример SQL-запроса

Посмотреть все не просроченные записи в кеше для определенного модуля можно следующим запросом:

SELECT cid, created, expire FROM cache WHERE cid LIKE 'my_module:%' AND (expire = 0 OR expire > UNIX_TIMESTAMP()) ORDER BY created DESC;

Смотрите также

  • таблицу cache_bootstrap,
    которая хранит критически важный для загрузки ядра кеш
  • таблицу cache_render,
    которая предназначена для кеширования рендер-массивов
  • таблицу cache_config,
    которая используется для кеширования конфигурации
  • таблицу cache_data,
    которая является обобщенной таблицей для произвольных данных
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить