При установке на "тормозящий" сайт модуля 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, подскажите, является ли нормальным такое его функционирование. И если нет, то в чем может быть причина?
Комментарии
Засунь перевод в settings.php и радуйся жизни, экономишь запросы и модуль locale можно отключить
Спасибо за совет, но меня интересуют возможные причины того что кэш не используется.
Строки может длинные, более 75 символов
Причина неиспользования кэшированных данных оказалась в том, что в функции locale() переменная объявленная как global $locale; оказывалась пустой, поэтому cache_get("locale:$locale", 'cache'); также давала пустой результат, что и приводило к постоянному обновлению кэша и запросам переведенных строк напрямую из таблиц.
Дальше пока разбираться не стал, грубо поставил $locale='ru';
Количество запросов к БД уменьшилось примерно вдвое, время загрузки страницы также существенно сократилось. Клиент счастлив.
Интересно, надо у себя посмотреть... Тьфу ты блин, это ж для пятерки