关于主页的多个查询-页面加载/站点速度问题

时间:2013-09-13 作者:Mayeenul Islam

我认识一位客户,他设计了自己的时尚杂志网站。我的公司把这个项目交给我,让我用WordPress来完成。当我为网站制作完整的模板时,我发现了他完整的想法:这对我来说是完全怪异的;因为主页的设计有很多块,不少于20块,每个块都需要一个新的WP_Query() (刚才从this thread 我知道我是对的WP_Query() 对于每个块)。

正如我所怀疑的那样,最终的产品非常慢。

据我所知,我不是WordPress大师WP_Query() 无论何时调用,它都会使用其查询命中db,并根据查询检索数据。所以在这个网站上,在主页上点击20次,然后检索数据,这会使速度变慢。

在这种情况下,我想Speeding Up 解决方案,如:

使用公共功能分离每个帖子的循环,以便每次加载具有不同参数的单个时间,从而加快布局速度get_template_part(), 这样,当内容和布局首先很重要时,普通的东西将加载一次,并在需要的地方多次回显,对站点图像使用懒散加载,使其不会影响站点速度。如果可能并且不会产生冲突,则使用。js compression有了这些想法,我可能对他们的很多概念都有错误,但我发现它们在逻辑上很好。

因此,最终的问题是:

如何通过多个查询(即20个不同的查询)进一步加快网站的速度WP_Query() 对于每个查询

2 个回复
最合适的回答,由SO网友:ahmetlutfu 整理而成

必须使用缓存系统。如果没有缓存,您的站点将运行缓慢。使用APC或memcache来提高主页的速度。

或使用redis.

SO网友:Anjum

通过使用将查询保存到特定时间的瞬态中set_transient(); 并使用检索保存的查询get_transient(); 这将大大减少站点的加载时间,正如您所说,您在一个页面上使用20个查询,然后您需要设置不同的瞬态过期时间,以便所有瞬态不会立即过期。

示例用法:

$my_query = get_transient(\'my_query\');

if (!$my_query) {
    // run query
    $args = array(
        // query args
    );

    $my_query = new WP_Query($args);
            // set transient for 3 hours
    set_transient(\'my_query\', $my_query, 60*60*3);
}

   // run your loop
   if ($my_query->have_posts()) :
        while ($my_query->have_posts()) :
           $my_query->the_post();
           // do your stuff
        endwhile;
   endif;

结束

相关推荐

Performance on WPMS

我的WPMS站点托管在8核/32mb RAM服务器上,但响应时间非常长。我们有大约1000个博客(单个db上有35000多个表)和70000个页面浏览量。我认为我可以缩短响应时间,将具有更多页面浏览量的博客移动到单独的DB中,并使用hyper DB插件将所有博客拆分为每个DB 100个博客。你觉得怎么样?