Стажировка на реальных проектах:
наполнение портфолио, помощь с работой и заказами, пробные собеседования. Жми для подробностей→
102 of 182 menu
Бесплатный курс по Верстке. От новичка до продвинутого верстальщика! Начало 11 ноября. Жми для записи!

Таблица 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