web-dev-qa-db-ja.com

ページ数が多すぎるとページング時のロードが遅くなる

私は約10kの投稿を持っており、私はすべての投稿をリストしたページを作ったが、それは54ポストごとにページ付けされている。 6.730秒で131回クエリが実行されますが、ロードはかなり遅いです。速くロードする方法はありますか?

これは私の機能ページです

<?php
/* Custom code goes below this line. */

add_theme_support( 'post-formats', array( 'aside', 'gallery' ) );
add_filter( 'use_default_gallery_style', '__return_false' );

/* Add the Javascript */
$path = get_stylesheet_directory_uri() .'/js/';
wp_enqueue_script('post-navigation', $path.'jquery.navigate.js', array('jquery'));

function catch_that_image() {
global $post, $posts;
$first_img = '';
ob_start();
ob_end_clean();


$transformed_content = apply_filters('the_content',$post->post_content);


$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $transformed_content, $matches);
$first_img = $matches [1] [0];

if(empty($first_img)){ //Defines a default image
$first_img = "/images/default.jpg";
}
return $first_img;
}

function pagination($pages = '', $range = 4)
{  
     $showitems = ($range * 2)+1;  

     global $paged;
     if(empty($paged)) $paged = 1;

     if($pages == '')
     {
         global $wp_query;
         $pages = $wp_query->max_num_pages;
         if(!$pages)
         {
             $pages = 1;
         }
     }   

     if(1 != $pages)
     {
         echo "<div class=\"pagination\"><span>Page ".$paged." of ".$pages."</span>";
         if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href='".get_pagenum_link(1)."'>&laquo; First</a>";
         if($paged > 1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."'>&lsaquo; Previous</a>";

         for ($i=1; $i <= $pages; $i++)
         {
             if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems ))
             {
                 echo ($paged == $i)? "<span class=\"current\">".$i."</span>":"<a href='".get_pagenum_link($i)."' class=\"inactive\">".$i."</a>";
             }
         }

         if ($paged < $pages && $showitems < $pages) echo "<a href=\"".get_pagenum_link($paged + 1)."\">Next &rsaquo;</a>";  
         if ($paged < $pages-1 &&  $paged+$range-1 < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($pages)."'>Last &raquo;</a>";
         echo "</div>\n";
     }
}

// This function should go in functions.php
function mam_posts_where ($where) {
   global $mam_global_where;
   if ($mam_global_where) $where .= " $mam_global_where";
   return $where;
}
add_filter('posts_where','mam_posts_where');

/* Custom code goes above this line. */
?>

これが私のページテンプレートです

<?php
/*
Template Name: List
*/
?>

<?php get_header(); ?>

        <div id="container">
            <div id="content2" role="main">

<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array( 'post_type' => 'post', 'posts_per_page' => 54, 'paged' => $paged );
$wp_query = new WP_Query($args);
while ( have_posts() ) : the_post(); ?>
<div class="seriesbox">
<a class="size-thumbnail" href="<?php the_permalink(); ?>"><img src="<?php echo catch_that_image() ?>"/></a>
<div class="seriestitle"><h2><?php the_title() ?></h2></div>
</div>
<?php endwhile; ?>

<!-- then the pagination links -->
<?php if (function_exists("pagination")) {
    pagination($additional_loop->max_num_pages);
} ?>

            </div><!-- #content -->
        </div><!-- #container -->

        <?php get_footer(); ?>
2
Ruriko

はい、キャッシュを使用してください。ただし、キャッシュを使用しても、page/2のキャッシュは新しい投稿を発行するたびに変更されるため、実際に行っていることを再考する必要があります。あなたはおそらくあなたがそこで成し遂げようとしていることを再考すべきです、なぜ54そしてそれ以下ではありませんか? 1ページに54枚の画像が大量にあり、HTMLの生成だけでなく、画像の取得に時間がかかるため、ページは遅くなります。

1
Mark Kaplun