Таблица cache_locale
Таблица cache_locale является частью системы кеширования Drupal и предназначена для хранения кешированных версий переведенных строк. Это значительно повышает производительность многоязычных сайтов, уменьшая количество запросов к основной таблице локализации.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
cid |
varchar(255) |
Уникальный идентификатор кеш-записи. Формируется на основе исходной строки и контекста перевода. |
data |
longblob |
Сериализованные данные перевода. Содержит переведенную строку и связанные метаданные. |
expire |
int |
Время истечения срока действия кеш-записи в формате Unix timestamp. Значение 0 означает, что запись не имеет срока годности.
|
created |
int |
Время создания кеш-записи в формате Unix timestamp. |
serialized |
smallint |
Флаг, указывающий на то, что данные в поле data сериализованы. 1 - сериализованы, 0 - нет.
|
tags |
longtext |
Теги кеша, используемые для инвалидации групп кеш-записей. Хранятся в формате, разделенном переносами строк. |
checksum |
varchar(255) |
Контрольная сумма тегов, используемая для оптимизации операций инвалидации кеша. |
Как это работает
Когда Drupal需要 перевести строку, он сначала проверяет наличие перевода в кеше cache_locale. Если перевод найден и не устарел, он используется без обращения к основной таблице locales_target.
Ключ кеша (cid) генерируется на основе исходной строки, языка перевода и контекста. Это гарантирует, что разные варианты перевода одной и той же строки в разных контекстах будут кешироваться отдельно.
При изменении переводов через интерфейс администратора или импорт файлов .po, соответствующие записи в кеше инвалидируются с помощью системы тегов. Это обеспечивает актуальность переводов, отображаемых пользователям.
Таблица очищается стандартными механизмами кеширования Drupal (например, при выполнении drush cache-rebuild или через административный интерфейс). Также записи автоматически удаляются по истечении срока их действия.
Пример SQL-запроса
Посмотреть активные кеш-записи для определенного языка можно следующим запросом:
SELECT cid, created, expire
FROM cache_locale
WHERE cid LIKE '%ru%' AND (expire = 0 OR expire > UNIX_TIMESTAMP())
ORDER BY created DESC
LIMIT 10;
Смотрите также
-
таблицу
locales_source,
которая хранит исходные строки для перевода -
таблицу
locales_target,
которая содержит готовые переводы строк -
таблицу
locales_location,
которая отслеживает расположение строк в коде -
таблицу
cache_default,
которая является основной таблицей кеширования Drupal