[решено] Кэш locale обновляется при каждой загрузке страницы

Главные вкладки

Аватар пользователя Krotty@drupal.org Krotty@drupal.org 21 апреля 2009 в 22:34

При установке на "тормозящий" сайт модуля Devel и включения лога запросов с удивлением увидел что кэш локализации обновляется при каждой загрузке страницы!
Т.е. при каждой загрузке страницы выполняется:

UPDATE cache SET data = "......" , created = 1240338850, expire = 0, headers = '' WHERE cid = 'locale:ru'

и соответственно масса запросов типа

SELECT s.lid, t.translation FROM locales_source s INNER JOIN locales_target t ON s.lid = t.lid WHERE s.source = '....' AND t.locale = 'ru'

Если кто-то близко знаком с кэшированием в модуле locale, подскажите, является ли нормальным такое его функционирование. И если нет, то в чем может быть причина?

Комментарии

Аватар пользователя Krotty@drupal.org Krotty@drupal.org 22 апреля 2009 в 1:35

Причина неиспользования кэшированных данных оказалась в том, что в функции locale() переменная объявленная как global $locale; оказывалась пустой, поэтому cache_get("locale:$locale", 'cache'); также давала пустой результат, что и приводило к постоянному обновлению кэша и запросам переведенных строк напрямую из таблиц.

Дальше пока разбираться не стал, грубо поставил $locale='ru';

Количество запросов к БД уменьшилось примерно вдвое, время загрузки страницы также существенно сократилось. Клиент счастлив.