Ускорить работу ЕЕ
Новичок
Всего сообщений: 61
Зарегистрирован 2010-10-05
Есть ли функция у ее, чтобы шаблоны по умолчанию читались из файлов а не из базы.
Просто если включить режим отладки и открыть страницу внизу мы видим примерно 400 с небольшим запросов.
Время выполнения которых от 4 до 12 сек. Как уменьшить это количество запросов, ведь известно что неструктурированные данные с диска читаются быстрее чем из базы.
Sr. Member
Всего сообщений: 987
Зарегистрирован 2008-09-27
Что же за шаблон с 400 запросами. Тут нужно копать не в сторону сохранения шаблона в бд или файл. Если даже шаблон и будет сохранен в файл, то к бд все равно идет обращение.
У тебя либо код неправильно построен, либо очень много все стоит
Новичок
Всего сообщений: 61
Зарегистрирован 2010-10-05
Даже вывод простейшего шаблона с 1 записью сопровождается 270 запросами к БД.
Это служебные запросы. Без моих вложенных шаблонов и внутренних запросов к базе.
Sr. Member
Всего сообщений: 987
Зарегистрирован 2008-09-27
Быть такого не может. Может зацикливается где-то что-то. Покажи шаблон.
Чисто установленная система где-то запросов 10 выдает + говоришь вывод weblog максимум 9 без расширений доплниетлеьных и без отключенных функций
Member
Всего сообщений: 172
Зарегистрирован 2010-07-13
270 на простом шаблоне с 1 записью???? Покажите мне этот ПРОСТЕЙШИЙ шаблон!
Подпись
booooring…
Новичок
Всего сообщений: 61
Зарегистрирован 2010-10-05
SELECT es .* FROM exp_sites AS es WHERE es . site_name = 'ru' 2 SELECT DISTINCT ee .* FROM exp_extensions ee WHERE enabled = 'y' ORDER BY hook , priority ASC , class 3 SELECT member_id , admin_sess , last_activity FROM exp_sessions WHERE session_id = '006e6cda85468364afcbb8b536d69a1f' AND ip_address = '' AND user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.' AND site_id = '2' 4 SELECT m . weblog_id , m . tmpl_group_id , m . username , m . screen_name , m . member_id , m . email , m . url , m . location , m . join_date , m . last_visit , m . last_activity , m . total_entries , m . total_comments , m . total_forum_posts , m . total_forum_topics , m . last_forum_post_date , m . language , m . timezone , m . daylight_savings , m . time_format , m . profile_theme , m . forum_theme , m . private_messages , m . accept_messages , m . last_view_bulletins , m . last_bulletin_date , m . display_signatures , m . display_avatars , m . last_email_date , m . notify_by_default , m . ignore_list , g .* FROM exp_members AS m , exp_member_groups AS g WHERE g . site_id = '2' AND unique_id = 'beca17a7eac36555a8598a17071c5290' AND password = '' AND m . group_id = g . group_id 5 UPDATE ` exp_sessions ` SET ` session_id ` = '006e6cda85468364afcbb8b536d69a1f' , ` member_id ` = '1' , ` admin_sess ` = '1' , ` ip_address ` = '' , ` user_agent ` = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.' , ` last_activity ` = '1288852889' WHERE session_id = '006e6cda85468364afcbb8b536d69a1f' 6 SELECT * FROM exp_online_users WHERE site_id = '2' AND date > 1288851989 AND weblog_id = '0' ORDER BY name 7 UPDATE ` exp_online_users ` SET ` weblog_id ` = '0' , ` member_id ` = '1' , ` name ` = 'Vall' , ` ip_address ` = '' , ` date ` = '1288852889' , ` anon ` = 'y' , ` site_id ` = '2' WHERE site_id = '2' AND ip_address = '' AND member_id = '1' 8 SELECT * FROM exp_stats WHERE site_id = '2' AND weblog_id = '0' 9 UPDATE exp_stats SET last_visitor_date = '1288852889' WHERE site_id = '2' AND weblog_id = '0' 10 SELECT exp_templates . template_name , exp_templates . template_id , exp_templates . template_data , exp_templates . template_type , exp_templates . edit_date , exp_templates . save_template_file , exp_templates . cache , exp_templates . refresh , exp_templates . no_auth_bounce , exp_templates . enable_http_auth , exp_templates . allow_php , exp_templates . php_parse_location , exp_templates . hits , exp_template_groups . group_name FROM exp_template_groups , exp_templates WHERE exp_template_groups . group_id = exp_templates . group_id AND exp_template_groups . site_id = '2' AND exp_templates . template_name = 'index' AND exp_template_groups . is_site_default = 'y' 11 UPDATE exp_templates SET hits = '80723' WHERE template_id = '16' 12 SELECT exp_templates . template_name , exp_templates . template_id , exp_templates . template_data , exp_templates . template_type , exp_templates . edit_date , exp_templates . save_template_file , exp_templates . cache , exp_templates . refresh , exp_templates . no_auth_bounce , exp_templates . enable_http_auth , exp_templates . allow_php , exp_templates . php_parse_location , exp_templates . hits , exp_template_groups . group_name FROM exp_template_groups , exp_templates WHERE exp_template_groups . group_id = exp_templates . group_id AND exp_template_groups . site_id = '2' AND exp_templates . template_name = '.1_masterpage' AND exp_template_groups . group_name = 'elements' 13 SELECT exp_templates . template_name , exp_templates . template_id , exp_templates . template_data , exp_templates . template_type , exp_templates . edit_date , exp_templates . save_template_file , exp_templates . cache , exp_templates . refresh , exp_templates . no_auth_bounce , exp_templates . enable_http_auth , exp_templates . allow_php , exp_templates . php_parse_location , exp_templates . hits , exp_template_groups . group_name FROM exp_template_groups , exp_templates WHERE exp_template_groups . group_id = exp_templates . group_id AND exp_template_groups . site_id = '2' AND exp_templates . template_name = '.1_head' AND exp_template_groups . group_name = 'elements' 14 SELECT exp_templates . template_name , exp_templates . template_id , exp_templates . template_data , exp_templates . template_type , exp_templates . edit_date , exp_templates . save_template_file , exp_templates . cache , exp_templates . refresh , exp_templates . no_auth_bounce , exp_templates . enable_http_auth , exp_templates . allow_php , exp_templates . php_parse_location , exp_templates . hits , exp_template_groups . group_name FROM exp_template_groups , exp_templates WHERE exp_template_groups . group_id = exp_templates . group_id AND exp_template_groups . site_id = '2' AND exp_templates . template_name = '.1_headmenu' AND exp_template_groups . group_name = 'elements' 15 SELECT exp_templates . template_name , exp_templates . template_id , exp_templates . template_data , exp_templates . template_type , exp_templates . edit_date , exp_templates . save_template_file , exp_templates . cache , exp_templates . refresh , exp_templates . no_auth_bounce , exp_templates . enable_http_auth , exp_templates . allow_php , exp_templates . php_parse_location , exp_templates . hits , exp_template_groups . group_name FROM exp_template_groups , exp_templates WHERE exp_template_groups . group_id = exp_templates . group_id AND exp_template_groups . site_id = '2' AND exp_templates . template_name = '.1_tablemenu' AND exp_template_groups . group_name = 'elements' 16 SELECT exp_templates . template_name , exp_templates . template_id , exp_templates . template_data , exp_templates . template_type , exp_templates . edit_date , exp_templates . save_template_file , exp_templates . cache , exp_templates . refresh , exp_templates . no_auth_bounce , exp_templates . enable_http_auth , exp_templates . allow_php , exp_templates . php_parse_location , exp_templates . hits , exp_template_groups . group_name FROM exp_template_groups , exp_templates WHERE exp_template_groups . group_id = exp_templates . group_id AND exp_template_groups . site_id = '2' AND exp_templates . template_name = '.1_info' AND exp_template_groups . group_name = 'elements'
Новичок
Всего сообщений: 61
Зарегистрирован 2010-10-05
241 SELECT exp_templates . template_name , exp_templates . template_id , exp_templates . template_data , exp_templates . template_type , exp_templates . edit_date , exp_templates . save_template_file , exp_templates . cache , exp_templates . refresh , exp_templates . no_auth_bounce , exp_templates . enable_http_auth , exp_templates . allow_php , exp_templates . php_parse_location , exp_templates . hits , exp_template_groups . group_name FROM exp_template_groups , exp_templates WHERE exp_template_groups . group_id = exp_templates . group_id AND exp_template_groups . site_id = '2' AND exp_templates . template_name = '.bd' AND exp_template_groups . group_name = 'elements' 242 SELECT exp_templates . template_name , exp_templates . template_id , exp_templates . template_data , exp_templates . template_type , exp_templates . edit_date , exp_templates . save_template_file , exp_templates . cache , exp_templates . refresh , exp_templates . no_auth_bounce , exp_templates . enable_http_auth , exp_templates . allow_php , exp_templates . php_parse_location , exp_templates . hits , exp_template_groups . group_name FROM exp_template_groups , exp_templates WHERE exp_template_groups . group_id = exp_templates . group_id AND exp_template_groups . site_id = '2' AND exp_templates . template_name = '.1_footer' AND exp_template_groups . group_name = 'elements' 243 SELECT exp_templates . template_name , exp_templates . template_id , exp_templates . template_data , exp_templates . template_type , exp_templates . edit_date , exp_templates . save_template_file , exp_templates . cache , exp_templates . refresh , exp_templates . no_auth_bounce , exp_templates . enable_http_auth , exp_templates . allow_php , exp_templates . php_parse_location , exp_templates . hits , exp_template_groups . group_name FROM exp_template_groups , exp_templates WHERE exp_template_groups . group_id = exp_templates . group_id AND exp_template_groups . site_id = '2' AND exp_templates . template_name = '.saperfoot' AND exp_template_groups . group_name = 'elements' 244 SELECT variable_name , variable_data FROM exp_global_variables WHERE site_id = '2' AND user_blog_id = '0' 245 SELECT action_id , class, method FROM exp_actions WHERE (class= 'Trackback_CP' AND method = 'receive_trackback' ) OR (class= 'Search' AND method = 'do_search' )
Новичок
Всего сообщений: 61
Зарегистрирован 2010-10-05
Это не простейший, но в моей системе самый легкий )
примерно с 12 по 40 идут запросы на вложенные шаблоны.
с 40 по 120 запросы на галерею изображений для каждого вложенного шаблона
потом идет запрос на вывод объектов в которых опять же идут запросы в галерею изображений.
и под конец опять вложенные шаблоны.
всего 3-4 уровня вложенности шаблонов
1 уровень - мастерпэйдж-шапка и мастерпэйдж-футер
2 уровень - блоки (например: лого, новости, топ объекты, рекламный слайдер и т.д.)
3 уровень - вывод объектов внутри блоков
4 уровень - галерея изображений внутри объектов
Новичок
Всего сообщений: 61
Зарегистрирован 2010-10-05
387 SELECT exp_templates . template_name , exp_templates . template_id , exp_templates . template_data , exp_templates . template_type , exp_templates . edit_date , exp_templates . save_template_file , exp_templates . cache , exp_templates . refresh , exp_templates . no_auth_bounce , exp_templates . enable_http_auth , exp_templates . allow_php , exp_templates . php_parse_location , exp_templates . hits , exp_template_groups . group_name FROM exp_template_groups , exp_templates WHERE exp_template_groups . group_id = exp_templates . group_id AND exp_template_groups . site_id = '2' AND exp_templates . template_name = '.1_premium' AND exp_template_groups . group_name = 'elements' 388 SELECT exp_templates . template_name , exp_templates . template_id , exp_templates . template_data , exp_templates . template_type , exp_templates . edit_date , exp_templates . save_template_file , exp_templates . cache , exp_templates . refresh , exp_templates . no_auth_bounce , exp_templates . enable_http_auth , exp_templates . allow_php , exp_templates . php_parse_location , exp_templates . hits , exp_template_groups . group_name FROM exp_template_groups , exp_templates WHERE exp_template_groups . group_id = exp_templates . group_id AND exp_template_groups . site_id = '2' AND exp_templates . template_name = '.1_lastact' AND exp_template_groups . group_name = 'elements' 389 SELECT exp_templates . template_name , exp_templates . template_id , exp_templates . template_data , exp_templates . template_type , exp_templates . edit_date , exp_templates . save_template_file , exp_templates . cache , exp_templates . refresh , exp_templates . no_auth_bounce , exp_templates . enable_http_auth , exp_templates . allow_php , exp_templates . php_parse_location , exp_templates . hits , exp_template_groups . group_name FROM exp_template_groups , exp_templates WHERE exp_template_groups . group_id = exp_templates . group_id AND exp_template_groups . site_id = '2' AND exp_templates . template_name = '.1_footer' AND exp_template_groups . group_name = 'elements' 390 SELECT exp_templates . template_name , exp_templates . template_id , exp_templates . template_data , exp_templates . template_type , exp_templates . edit_date , exp_templates . save_template_file , exp_templates . cache , exp_templates . refresh , exp_templates . no_auth_bounce , exp_templates . enable_http_auth , exp_templates . allow_php , exp_templates . php_parse_location , exp_templates . hits , exp_template_groups . group_name FROM exp_template_groups , exp_templates WHERE exp_template_groups . group_id = exp_templates . group_id AND exp_template_groups . site_id = '2' AND exp_templates . template_name = '.saperfoot' AND exp_template_groups . group_name = 'elements' 391 SELECT variable_name , variable_data FROM exp_global_variables WHERE site_id = '2' AND user_blog_id = '0' 392 SELECT action_id , class, method FROM exp_actions WHERE (class= 'Trackback_CP' AND method = 'receive_trackback' ) OR (class= 'Search' AND method = 'do_search' )
Это вывод weblog список всех объектов в базе по 1 категории с выводом галереи изображений к каждому объекту
Новичок
Всего сообщений: 61
Зарегистрирован 2010-10-05
И все же есть вопрос на мой первый вопрос?
Как заставить ЕЕ читать текстовые данные с ЖД а не из базы.
Причем ЕЕ игнорирует даже правила кэширования.
Тестировал так, запустил страничку - например получилось 273 запроса.
Включил кэширование (в 3 местах: глобальное кэширование, кэширование шаблонов, плюс добавил внутрь веблога параметр кэширования)
Перезапускаю страницу, закрываю ее. Открываю снова и вижу примерно 265 запросов. Т.е. Почти ничего незакэшировалась.
Правда картинки закэшировались, что ускорило загрузку примерно на 1с. Т.е. вместо 8с теперь сайт открывается за 7с.
Как еще можно ускорить?
Я знаю про отключение ненужных данных при выводе weblog’а.
Еще я могу уменьшить собственные запросы, заменив * на список необходимых мне полей.
Что даст мне, по моим подсчетам, примерно еще 1-2 секунды.
Какие еще существуют способы.
Все-таки я думаю, если бы была возможность заставить ЕЕ читать шаблоны из файлов а не с БД, это сократило бы загрузку примерно еще на 2-3 секунды.
И конечно я еще не упомянул страницу поиска. Где выполняется мой запрос на поиск во всей базе объектов.
Скорость выполнения(имеется ввиду вместе с выводом результата) этого запроса ужасает, хотя запрос не из самых трудных:
SELECT * FROM exp_weblog_data INNER JOIN exp_category_posts ON exp_category_posts . entry_id = exp_weblog_data . entry_id where cat_id = 46
Скорость выполнения данного запроса примерно 2секунды, но вывод данных происходит примерно через 20-40 секунд, после окончания выполнения запроса.
как отследить на что ЕЕ тратит это время?
Я подключался к базе объектов напрямую, не через ЕЕ, выполнял на простом ПХП запрос и выводил на страничку точно таким же способом как и ЕЕ.
Время выполнения и вывода 1,12 секунды.
Как узнать где ЕЕ сжирает 40 секунд?
Sr. Member
Всего сообщений: 987
Зарегистрирован 2008-09-27
Выложи шаблон. У меня главная на огромнейший порталах максимум сотню выдает запросово
Новичок
Всего сообщений: 61
Зарегистрирован 2010-10-05
Минут 10 дай, Я соберу все в 1 место
Новичок
Всего сообщений: 61
Зарегистрирован 2010-10-05
Главная страница:
{embed = "elements/.1_masterpage" } {embed = "elements/.1_info" } {embed = "elements/.1_searchform" } {embed = "elements/.1_pop" } {embed = "elements/.1_masterpagebottom" }
.1_info - текстовый блок
.1_searchform - форма поиска
.1_pop - чтобы ускорить тоже сделал текстовым блоком без запроса к базе (изменяется и дополняется руками)
.1_masterpage
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" > < html > < head > < title > авпвапвап </ title > {embed = "elements/.1_head" } </ head > < body > < div id = "pagewidth" > < div id = "wrapper" class= "clearfix" > < div id = "twocols" class= "clearfix" > < div id = "maincol" > {embed = "elements/.1_headmenu" } {embed = "elements/.1_tablemenu" }
.1_masterpagebottom
</ div > < div id = "rightcol" > < div id = "objectsslide" > {embed = "elements/.1_objectslide" } </ div > < div id = "premium" > {embed = "elements/.1_premium" } </ div > < div id = "lastact" > {embed = "elements/.1_lastact" } </ div > </ div > </ div > < div id = "leftcol" > {embed = "elements/.1_logo" } < div id = "news" > {embed = "elements/.1_bonuses" } {embed = "elements/.1_promotur" } </ div > {embed = "elements/.1_exp" } </ div > </ div > {embed = "elements/.1_footer" } </ div > </ body > </ html >
.1_head - блок подключения css и javascripts
.1_headmenu - меню текстовый блок без запроса к БД
.1_tablemenu - табличное меню без запроса к базе
.1_objectslide
{exp : weblog : entries status = "for_sale" order = "desc" limit = "40" orderby = "entry_id" weblog = "catalogue" category = "46" show_expired = "yes" dynamic = "off" } {embed = "test/.obect_index_item_testmainnew" title_ru = "{title_ru}" entry_id = "{entry_id}" title = "{title}" titlus = "{title}" region = "{region}" nas_punkt = "{nas_punkt}" ob_plosht = "{ob_plosht}" zeml_plosht = "{zeml_plosht}" ob_rooms = "{ob_rooms}" ob_beds = "{ob_beds}" ob_price = "{ob_price}" sqm_price = "{sqm_price}" compl_minprice = "{compl_minprice}" compl_maxprice = "{compl_maxprice}" } { / exp : weblog : entries}
.obect_index_item_testmainnew
{exp : gallery_extended : entries limit = "1" related_id = "{embed:entry_id}" type = "weblog" } < a href = "{path=" type = "lowercase" title = "Апартаменты в Болгарии" > < img style = "itemimgmain" src = "{thumb_url}" width = "100%" height = "150" alt = "Апартаменты в Болгарии" > </ a > { / exp : gallery_extended : entries}
.1_premium.1_lastact.1_logo.1_bonuses.1_promotur.1_exp.1_footer - текстовые боки
Member
Всего сообщений: 191
Зарегистрирован 2009-03-17
Тестировал так, запустил страничку - например получилось 273 запроса.
Включил кэширование (в 3 местах: глобальное кэширование, кэширование шаблонов, плюс добавил внутрь веблога параметр кэширования)
Перезапускаю страницу, закрываю ее. Открываю снова и вижу примерно 265 запросов. Т.е. Почти ничего незакэшировалась.
скажи, а после очистки всех кешей и перезапуске страницы в директории с кешем - файлы то появляются?
я проверяю так - удаляю кеш. смотрю в диру с кешем - пусто. перезапускаю страницу - смотрю в диру с кешем - густо.
кстати я тоже перемудрил как-то было 240 запросов - после вклюечния кеша (только шаблонов) выдает 15 - меня устраивает.
Member
Всего сообщений: 191
Зарегистрирован 2009-03-17
Я знаю про отключение ненужных данных при выводе weblog’а.
Еще я могу уменьшить собственные запросы, заменив * на список необходимых мне полей.
Что даст мне, по моим подсчетам, примерно еще 1-2 секунды.
А еще, знаешь, советуют еще не использовать embed шаблоны. Кстати, зачем у тебя такое засилье их? уж менюхи всякие да формы поиска зачем выносить в embed?
Member
Всего сообщений: 191
Зарегистрирован 2009-03-17
я с галереями никогда не работал, но почему бы не так:
{exp : weblog : entries} {exp : gallery_extended : entries limit = "1" related_id = "{entry_id}" type = "weblog" } ... { / exp : gallery_extended : entries} { / exp : weblog : entries}
как минимум 40 запросов долой (получение из базы шаблона obect_index_item_testmainnew).