Transient api Caches confused

时间:2012-07-23 作者:Ronin

此代码适用于第1页

<?php
            $paged1 = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
            $recent1 = get_transient( \'recent1\' );
                                if ( false === $recent1) {
    $recent1 = new WP_Query (\'cat=3&posts_per_page=5\'.\'&paged=\'.$paged1);
    set_transient(\'recent1\', $recent1, 60*60);
    }
    // do normal loop stuff
    if ($recent1->have_posts()) : while ($recent1->have_posts()) : $recent1->the_post();
    ?>
    <div id="line"><a href="<?php the_permalink () ?>" rel="bookmark">
 <h2><?php the_title (); ?></h2>
 <?php the_post_thumbnail(array(100,100), array(\'class\' => \'alignleft\')); ?>
 <?php the_advanced_excerpt(); ?>

但是分页有一个问题。第1页与第2页或第3页等混淆。第/2页上有第/1页的内容或相反的内容。如何解决此问题?

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

“这个代码可以工作”-但它不能!

如果要缓存分页的帖子,则需要将其分块存储:

if ( ! $my_paged = absint( get_query_var( \'paged\' ) ) )
    $my_paged = 1;

if ( ! $my_query = get_transient( "recent_$paged" ) ) {
    $my_query = new WP_Query( "cat=3&posts_per_page=5&paged=$my_paged" );
    set_transient( "recent_$paged", $my_query, 60 * 60 );
}

SO网友:W van Dam

分页存在问题,因为在存储和检索瞬态文件时没有考虑分页。尝试一下:

// Find out which page this is. If \'page\' is not a number, set page to 1.
$page = ( ctype_digit( $_REQUEST[\'page\'] ) ) ? $_REQUEST[\'page\'] : 1;

$paged1 = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$recent1 = get_transient( \'recent\'.$page );

if ( false === $recent1) {
    $recent1 = new WP_Query (\'cat=3&posts_per_page=5\'.\'&paged=\'.$paged1);
    set_transient(\'recent\'.$page, $recent1, 60*60);
}
此外,如果您还没有意识到,请查看“WP Super Cache”。

编辑:死亡医生打败了我。

结束

相关推荐

如何提高这个QUERY_POSTS循环的性能呢?

我创建了一个WordPress页面模板,为我网站上的某些WordPress帖子构建一个定制的XML提要。具体来说,页面模板呈现XML,并且仅包括某些自定义帖子类型,并且仅当这些帖子包含特定元数据时。我正在使用这些数据将WordPress内容提供给iOS应用程序。它似乎工作得很好;然而,来自服务器的响应时间各不相同,并且经常失败。我的托管公司(MediaTemple)建议我可以通过提高数据库查询的效率来提高性能。这种查询有没有标准的优化提示?<?php $numposts = -1;