Модуль Administration menu вызывает ~20 лишних некешируемых запросов к базе из функции locale

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

Аватар пользователя orbisnull orbisnull 11 мая 2010 в 13:05

Поставил на сайт мудуль Administration menu и в логах devel увидел при обращении к каждой странице запросы вида:

locale  SELECT s.lid, t.translation, s.version FROM locales_source s LEFT JOIN locales_target t ON s.lid = t.lid AND t.language = 'ru' WHERE s.source = 'Manage posts by content type, including default status, front page promotion, etc.' AND s.textgroup = 'default'
locale  SELECT s.lid, t.translation, s.version FROM locales_source s LEFT JOIN locales_target t ON s.lid = t.lid AND t.language = 'ru' WHERE s.source = 'Control posting behavior, such as teaser length, requiring previews before posting, and the number of posts on the front page.' AND s.textgroup = 'default'
locale  SELECT s.lid, t.translation, s.version FROM locales_source s LEFT JOIN locales_target t ON s.lid = t.lid AND t.language = 'ru' WHERE s.source = 'Configure the number of items per feed and whether feeds should be titles/teasers/full-text.' AND s.textgroup = 'default'

После отключения модуля запросы исчезают, выполнение в виде sql - пустой результат, хотя переводы есть, и вообще непонятно зачем эти переводы для меню...

Комментарии

Аватар пользователя orbisnull orbisnull 11 мая 2010 в 16:36

они мешают при оптимизации кол-ва запросов, отключить конечно не проблема, но в принципе это явный баг, причем непонятно зачем ему эти строки из админки )

Аватар пользователя xxandeadxx xxandeadxx 12 мая 2010 в 0:20

а вообще эти запросы делает модуль menu (функции _menu_item_localize, _menu_link_translate и т.д.), admin_menu лишь использует его функции

Аватар пользователя Sinkora Sinkora 22 мая 2010 в 13:28

"Crea" wrote:
Смешной топик.

Нормальный топик.

Почти все популярные модули для Друпала имеют лишние запросы. И это смешно?
Вот есть, например, такой модуль как simplemenu. Так он тоже делает подобные запросы на всех страницах, где есть это меню. И модуль как раз предназначается не только для админов, но и для пользователей сайта.

Теперь возьмем еще один популярный модуль vote_up_down. Так там вообще, когда смотришь код, то плакать хочется. А именно: при отключенном голосовании за комменты, модуль все равно гоняет лишние запросы к базе для проверки наличия баллов за конкретный коммент. И если на странице 100 комментов, то он сделает 100 запросов зря. Т.е. в админке и никак по-другому это нельзя отключить. Единственный способ - это закомментировать в коде модуля несколько строк.

И таких примеров можно привести бесконечное множество.

"xxandeadxx" wrote:
вам сюда http://drupal.org/project/issues/admin_menu[/quote]
Мне проще самому пофиксить баги в модуле или написать свой модуль, чем писать на орг и просить об этом разработчиков, которым по понятным причинам на свои модули наплевать. "Понятные причины" - в моем понимании, это когда разработчики выкладывают модуль для всех, а тратить время на его переделки для совместимости с другими модулями у них нет желания, ибо им достаточно того, что их модуль хорошо работает у них самих.

"xxandeadxx" wrote:
а вообще эти запросы делает модуль menu (функции _menu_item_localize, _menu_link_translate и т.д.), admin_menu лишь использует его функции

И что? Обязательно использовать функции модуля menu?

Аватар пользователя Crea Crea 23 мая 2010 в 0:50

Sinkora wrote:
"Crea" wrote:
Смешной топик.

Нормальный топик.

Почти все популярные модули для Друпала имеют лишние запросы. И это смешно?


Причем тут все модули, если обсуждается 1 модуль, работающий для 1 юзера - администратора ? У вас что, все посетители сайта - администраторы ? Тогда, боюсь, специалисты по друпалу здесь бессильны - нужно обращаться к врачам. Так и представляю картину:
Quote:

- Администраторское меню!! 20 запросов!! ааааа!!!
- Сейчас, мы вам поможем. Сейчас....(вкалывает укол). Вот видите, запросов уже меньше.

Аватар пользователя xxandeadxx xxandeadxx 22 мая 2010 в 2:20

"Sinkora" wrote:
И что? Обязательно использовать функции модуля menu?

а зачем изобретать свой велосипед когда всё давно написано профессионалами. да, и от запросов можно избавится с помощью правки settings.php:

<?php
/**
 * String overrides:
 *
 * To override specific strings on your site with or without enabling locale
 * module, add an entry to this list. This functionality allows you to change
 * a small number of your site's default English language interface strings.
 *
 * Remove the leading hash signs to enable.
 */
# $conf['locale_custom_strings_en'] = array(
#   'forum'      => 'Discussion board',
#   'count min' => 'count minutes',
# );
?>
Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 22 мая 2010 в 2:30

А по мне так топик смысла не имеет, так как подобные запросы генерируются системой локализации и О, МОЙ БОГ!!!111 каждым модулем, запросы эти не такие уж и тяжёлые.
Совсем другое дело кривые модули

Аватар пользователя Sinkora Sinkora 22 мая 2010 в 4:22

"RxB" wrote:
А по мне так топик смысла не имеет, так как подобные запросы генерируются системой локализации

Нет. Насчет топика. Система локализации генерирует только те запросы, которые нужны на данной странице сайта. А с нашим "чудо-модулем" мы имеем запросы, которые не имеют отношения к текущей странице.
"RxB" wrote:
111 каждым модулем, запросы эти не такие уж и тяжёлые.

Когда их много, то в сумме это имеет значение. А при нагрузках на сайт - тем более. Можете протестировать через ab.
"RxB" wrote:
Совсем другое дело кривые модули

Так как раз кривые модули - это те модули, которые делают лишнюю работу (в нашем случае лишние запросы к базе).
"xxandeadxx" wrote:
а зачем изобретать свой велосипед когда всё давно написано профессионалами

Я сам себе профессионал Smile
Если я нахожу ошибки в работе модулей от "профессионалов", то это не значит, что я изобретаю заново велосипед, это значит, что я делаю из него мопед Smile

Аватар пользователя xxandeadxx xxandeadxx 22 мая 2010 в 4:25

какие же это ошибки, следуя логики вся система локализации в drupal является одной большой ошибкой

Quote:
Мне проще самому пофиксить баги в модуле или написать свой модуль
...
Я сам себе профессионал :)

вперёд, пишите свой admin_menu_pro

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 22 мая 2010 в 4:22

Тогда сорри, бессмысленный труд писать в этом топике, ищите оптимизаторов-единомышленников. Тут кривость модуля потихоньку переходит в кривость друпала. Как бороться вам подсказали выше, но видать вы не прочитали.

Аватар пользователя Sinkora Sinkora 22 мая 2010 в 4:24

"xxandeadxx" wrote:
какие же это ошибки, следуя логики вся система локализации в drupal является одной большой ошибкой

Система локализации генерирует только те запросы, которые нужны на данной странице сайта. А с нашим "чудо-модулем" мы имеем запросы, которые не имеют отношения к текущей странице. Хотя это я уже написал в предыдущем комментарии...

Аватар пользователя Sinkora Sinkora 22 мая 2010 в 4:32

"Sinkora" wrote:
Как бороться вам подсказали выше, но видать вы не прочитали.

settings.php не поможет, если модуль vote_up_down гоняет лишние запросы в таблицу votingapi_cache...

К тому же, кстати, с помощью локализации вы не сможете, например, перевести такие слова как "edit", "view" для разных типов материала, а также для страницы профиля...

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 22 мая 2010 в 4:42

"Sinkora" wrote:
settings.php не поможет, если модуль vote_up_down гоняет лишние запросы в таблицу votingapi_cache...

Давайте всё же различать, где кривые модули, а где штатная работа системы?
"Sinkora" wrote:
Система локализации генерирует только те запросы, которые нужны на данной странице сайта. А с нашим "чудо-модулем" мы имеем запросы, которые не имеют отношения к текущей странице. Хотя это я уже написал в предыдущем комментарии...

т.е. модуль придумывает от себя ненужную строку и специально гонит её в t()?

Аватар пользователя orbisnull orbisnull 22 мая 2010 в 9:18

вот понаставят люди 10-ки модулей, а потом вопли, "ваш друпал тормазной, 1000 запросов на страницу, а у меня 3 юзверя ходят" и т.п., а всего-то поставил модуль, потестил, убрал... и инфу было бы собирать тоже полезно, а в топике какое-то агрессивное настроение к оптимизации...

Аватар пользователя orbisnull orbisnull 22 мая 2010 в 9:25

и кстати я так и не понял, зачем для построения меню переводы ЭТИХ строк:

Views are customized lists of content on your system; they are highly configurable and give you control over how lists of content are presented
Заметка&lt;/em&gt; - подобна &lt;em&gt;странице&lt;/em&gt;, идеальный способ для создания и отображения содержания, информирующего и привлекающего посетителей. Пресс-релизы, объявления и записи, подобные записям в блоге могут быть созданы посредством &lt;em&gt;заметки&lt;/em&gt;. По умолчанию, &lt;em&gt;заметка&lt;/em&gt; может быть отображена на главной странице и комментироваться пользователями.&#039;
Enable or disable page caching for anonymous users and set CSS and JS bandwidth optimization options