Wordpress:拉动(大量)帖子图像时加载图像慢

时间:2014-02-24 23:32:30

标签: php jquery wordpress image

我有点像wordpress noob,试图从多个帖子中获取一些图像以显示在网格中。我正在处理的网站基本上会在“特色图片”上发布很多帖子(最多56个)并在主页面上显示,点击后将图片加载到帖子中。 这是我正在使用的代码:

$ args = array('numberposts'=> 56,'order'=>'DESC','orderby'=>'date','category'=>'120');                 $ postslist = get_posts($ args);

            if(count($postslist) > 0){
                foreach ($postslist as $post) :  setup_postdata($post); ?> 
                    <div class='oneCell'>
                        <?php 
                            $image = get_the_post_thumbnail($this_post->ID, 'full size'); 
                            $imageSrc = substr($image, strpos($image, "src") + 5);
                            $imageSrc = substr($imageSrc, 0, strPos($imageSrc, "\""));

                            $finalImage = "<img class='lazy' src='/images/grey.png' data-original='" . $imageSrc . "' />";
                            $lastImage = "<a href='";
                            $lastImage .= catch_that_image();
                            $lastImage .= "'>";
                            $lastImage .= $finalImage;
                            $lastImage .= "</a>";

                            echo $lastImage;
                        ?>
                    </div>
                <?php 
                    $currentCount = $currentCount + 1;
                endforeach;

循环中的$lastImage创建一个“a”标记,通过jquery控件显示图像。控制不是问题,因为它在网站的另一部分上工作100%。 当渲染时,它基本上渲染灰色的正方形而没有图像(正是我期望的那样),但非常缓慢,每1/2 - 3/4秒渲染一个框,一次一个,直到它们全部完成,然后页面按预期工作。

我的猜测是因为我的代码不是最有效的。有人能指出我正确的方向来清理它吗?或者关于如何加快加载时间的一些想法?

1 个答案:

答案 0 :(得分:1)

我认为延迟不是由浏览器尝试显示图像引起的,但PHP使用56次查询压倒了数据库。

本机函数用于拉取一个帖子的缩略图。如果您要查询N个帖子的图像,您应该使用自定义脚本直接从wp_postmeta表中检索一个查询中的缩略图。

除了修改查询($ wpdb类提供查询方法以完成此操作)之外,您还可以使用任何缓存机制仅在第一次请求每个图像时命中​​数据库。也许甚至W3TC插件都能够缓存get_thumbnail函数的结果。