Таблица cache_views
Таблица cache_views является частью системы кеширования Drupal и отвечает за хранение результатов работы модуля Views. Когда представление выполняется в первый раз, его результат (обычно HTML-вывод или данные) сохраняется в этой таблице. При последующих запросах система сначала проверяет наличие актуальной кешированной версии, что значительно снижает нагрузку на базу данных и ускоряет генерацию страниц.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
cid |
varchar(255) |
Первичный ключ. Уникальный идентификатор кеш-записи (Cache ID). Формируется на основе имени представления, ID отображения, аргументов, текущего языка и других параметров, уникальных для данного результата. |
data |
longblob |
Сериализованные данные, которые были закешированы. Это может быть готовый HTML-вывод, массив с результатами запроса или другие данные, сгенерированные представлением. |
expire |
int |
Временная метка Unix, указывающая, когда данная запись кеша становится недействительной. Значение 0 означает, что запись никогда не истекает. Значение -1 (CACHE_PERMANENT) означает, что запись действительна до явной очистки кеша.
|
created |
int |
Временная метка Unix, указывающая, когда была создана данная запись кеша. |
serialized |
smallint |
Флаг, указывающий, сериализованы ли данные в поле data. Значение 1 означает, что данные сериализованы, значение 0 - что нет.
|
tags |
longtext |
Список тегов кеша, разделенных переводом строки. Теги используются для инвалидации (признания недействительными) групп кеш-записей. Например, при обновлении ноды тег node:[nid] приведет к очистке всего кеша, связанного с этой нодой.
|
checksum |
varchar(255) |
Контрольная сумма, используемая для проверки целостности тегов при инвалидации кеша. |
Как это работает
Когда пользователь запрашивает страницу, содержащую представление, модуль Views генерирует уникальный cid на основе параметров этого представления. Система проверяет наличие действующей записи с таким cid в таблице cache_views.
Если запись найдена и ее срок действия (expire) не истек, данные из поля data десериализуются и используются без выполнения тяжелых SQL-запросов к базе данных. Это значительно ускоряет время отклика.
Если подходящей записи в кеше нет, представление выполняется обычным образом: строится и выполняется SQL-запрос, результат обрабатывается, форматируется и затем сохраняется в cache_views для будущих запросов.
Система тегов (tags) обеспечивает точную инвалидацию кеша. Например, при сохранении термина таксономии будет инвалидирован кеш с тегом taxonomy_term:[tid]. Это означает, что все представления, которые выводят этот термин или зависят от него, будут автоматически перестроены при следующем запросе.
Пример SQL-запроса
Посмотреть все кеш-записи для определенного представления и проверить их актуальность можно следующим запросом:
SELECT cid, created, expire, LENGTH(data) as data_size
FROM cache_views
WHERE cid LIKE 'view_name:%'
ORDER BY created DESC;
Смотрите также
-
таблицу
cache_bootstrap,
которая хранит критически важный кеш для загрузки Drupal -
таблицу
cache_data,
которая является общей таблицей кеширования для произвольных данных -
таблицу
views_view,
которая хранит конфигурации представлений -
таблицу
views_display,
которая хранит настройки отображений представлений