我正在使用walker类创建我的自定义mega菜单,并使用它以2的菜单深度显示帖子缩略图。
似乎使用url\\u to\\u postid方法会导致ttfb高达>;10秒。我最初认为这是图像大小的问题,但即使将图像压缩了95%,我似乎也得到了相同的ttfb。
删除违规代码后,ttfb会急剧下降到<;1s,但不显示附件图像。
有没有其他方法可以让我的缩略图显示在超大菜单中,而不会导致性能大幅下降?
沃克。php代码:
function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ){
//url_to_post id causing >10s ttfb
$postid = url_to_postid( $item->url );
$thumbnail = get_the_post_thumbnail_url($postid);
if ( array_search( \'menu-item-has-children\', $item->classes )&& $depth==0 ) {
$output .= sprintf( "\\n<li class=\'topnavitem %s\'><a href=\'%s\' class=\\"topnavtext\\">%s</a> <span class=\'plus\'><i class=\'fas fa-angle-down\'></i></span>\\n", ( array_search( \'current-menu-item\', $item->classes ) || array_search( \'current-page-parent\', $item->classes ) ) ? \'\' : \'\', $item->url, $item->title );
}
elseif ( array_search( \'menu-item-has-children\', $item->classes )&& $depth==1 ) {
$output .= sprintf( "\\n<li class=\'productsnav %s\'><a href=\'%s\' class=\\"productsnavtext\\">%s</a><span class =\'sub-plus\'><i class =\'fas fa-angle-down\'></i></span>\\n", ( array_search( \'current-menu-item\', $item->classes ) || array_search( \'current-page-parent\', $item->classes ) ) ? \'\' : \'\', $item->url, $item->title );
}
//$thumbnail using url_to_postid being called at a menu depth of 2
elseif ($depth==2){
$output .= sprintf( "\\n<li class=\'midnavitem %s\'><div class=\'pictext\'><img src=\'%s\'/><a href=\'%s\' class=\\"midnavtext$postid\\">%s</a></div>\\n", ( array_search( \'current-menu-item\', $item->classes) ) ? \'\' : \'\', $thumbnail,$item->url, $item->title );
}
else {
$output .= sprintf( "\\n<li class=\'topnavitem %s\'><a href=\'%s\' class=\\"topnavtext\\">%s</a>\\n", ( array_search( \'current-menu-item\', $item->classes) ) ? \'\' : \'\', $item->url, $item->title );
}
}
function start_lvl( &$output, $depth ) {
$indent = str_repeat( "\\t", $depth );
if ($depth == 0) {
$output .= "\\n$indent<ul class=\\"nav-level-one\\" role=\\"submenu\\">\\n";
}
if ($depth == 1) {
$output .= "\\n$indent<ul class=\\"nav-level-two\\" role=\\"subsubmenu\\">\\n";
}
}