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

Таблица cache_page

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

Поля

Поле Тип данных Описание
cid varchar(255) Первичный ключ. Идентификатор кеш-записи. Для страничного кеша это, как правило, URL запрашиваемой страницы. Может также содержать префикс, если используется несколько бэкендов кеширования.
data longblob Сериализованные данные, которые были закешированы. В случае cache_page это обычно готовый HTML-код всей страницы или её основных частей.
expire int Временная метка Unix, указывающая, когда запись кеша становится недействительной. Значение 0 означает, что запись не должна expire. Значение -1 означает, что запись уже expired и должна быть удалена при следующем cron run.
created int Временная метка Unix, указывающая, когда была создана данная кеш-запись.
serialized smallint Флаг, указывающий, были ли данные сериализованы перед сохранением. 1 означает, что данные сериализованы, 0 - что нет.
tags longtext Пространство для хранения тегов кеша, разделенных переводом строки. Теги используются для инвалидации групп связанных кеш-записей. Например, при обновлении ноды все кеши страниц, где она отображается, будут сброшены по тегу node:{nid}.
checksum varchar(255) Контрольная сумма для тегов, используемая для проверки целостности данных при инвалидации кеша.

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

Когда анонимный пользователь запрашивает страницу на сайте Drupal, система проверяет, включен ли модуль Internal Page Cache и есть ли в таблице cache_page действующая (не expired) запись с cid, равным URL запроса. Если запись найдена, её содержимое (поле data) десериализуется и отправляется браузеру пользователя, полностью минуя процесс bootstrap Drupal и рендеринга темы.

Если действующей записи в кеше нет, страница генерируется стандартным образом. После генерации, если пользователь остался анонимным и страница подлежит кешированию, готовый HTML помещается в таблицу cache_page для последующих запросов.

Инвалидация (сброс) кеша происходит по нескольким причинам: истечение времени жизни записи (expire), явный вызов функций сброса кеша (например, cache_invalidate_tags()) или при выполнении очистки кеша через административный интерфейс. Теги (поле tags) позволяют точечно сбрасывать только те страницы, которые зависят от изменившихся данных (например, конкретного узла или термина таксономии).

Важно отметить, что страничный кеш работает только для анонимных пользователей. Для аутентифицированных пользователей используется другие механизмы кеширования (например, Dynamic Page Cache), так как содержимое страницы часто зависит от ролей и permissions пользователя.

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

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

SELECT cid, created, expire FROM cache_page WHERE cid LIKE '/%' AND expire > UNIX_TIMESTAMP() ORDER BY created DESC;

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

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