WordPress Get_pages () проблемы производительности Megamenu - PullRequest
0 голосов
/ 19 декабря 2011

Я экспериментировал с созданием своего собственного мегаменю в WordPress, в основном используя метод get_pages().

В настоящее время он имеет 3 уровня глубины, что составляет 3 вложенных цикла foreach - сначала я подумал:Есть ли более эффективный способ сделать это с помощью ванильных методов Wordpress 3.2 (таких как метод wp_nav_menu ()), и во-вторых, я должен беспокоиться о производительности?

Я спрашиваю, потому что я видел другие сайты, использующиемегаменус и на пару, есть заметная задержка при каждой загрузке страницы, в то время как меню просматривается / рассчитывается.На загрузку всей страницы в настоящее время уходит от 0,8 до 1,8 секунд - обычно для самого меню - 0,5 секунды.

В моей тестовой среде есть удаленный сервер базы данных, который учитывает различную задержку и составляеттрудно понять, есть ли проблема с производительностью или просто задержка в сети.

Я не знаю достаточно о сути WordPress, чтобы знать, что он на самом деле делает, когда я делаю эти вызовы, кто-нибудь здесь мудрее?

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

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

Ссылки:

http://codex.wordpress.org/Function_Reference/wp_nav_menu

http://codex.wordpress.org/Function_Reference/get_pages

РЕДАКТИРОВАТЬ: Некоторые псевдокод, показывающий типчто я сейчас делаю:

//get the toplevel pages
$parents = get_pages($args);
foreach ($parents as $parent)
{
    //echo out some links
    //get the children of the top level pages
    $childPages = get_pages($args);
    foreach ($childPages as $childpage)
    {
        //get the children of the child pages, echo a link and some markup
        $grandchildPages = get_pages($args);
        foreach ($grandchildPages as $grandchildPage)
        {  
            //echo out a link and some markup
        } 
    }
}
...