我的wordpress主题中有很多sql查询,例如,在最后6篇文章中添加了20个sql查询。所以,通常在我的网站上至少有100到150次查询,而我的网站因为这个原因而加载得很晚。
我听说过transient_api,并试图用它缓存查询,但失败了。
这里是我最后一次添加的帖子代码:
<?php
$gostermeid = $gosterme;
$kategoriid = $kategori;
$catquery = new WP_Query( 'cat=:-'.$gostermeid.'&posts_per_page='.$kactane.'&post_type[]=post&post_type[]=galeri&post_type[]=video&blazersix_update_post_thumbnail_cache=true' );
while($catquery->have_posts()) : $catquery->the_post();
?>
<div class="post">
.
.
.我试着把他们缓存成这样
<?php
$gostermeid = $gosterme;
$kategoriid = $kategori;
if ( false === ( $catquery = get_transient( 'lastaddedcache' ) ) )
$catquery = new WP_Query( 'cat=:-'.$gostermeid.'&posts_per_page='.$kactane.'&post_type[]=post&post_type[]=galeri&post_type[]=video&blazersix_update_post_thumbnail_cache=true' );
while($catquery->have_posts()) : $catquery->the_post();
set_transient( 'lastaddedcache', $catquery, 12 * HOUR_IN_SECONDS );
?>在这段代码之后,在我的页面的第二次刷新中,我最后添加的帖子没有显示。我做错了什么?我怎样才能修正我的代码?
谢谢你帮忙!
发布于 2017-07-03 13:18:40
您的代码忽略了在设置后12小时内对$catquery值的更改。这就是缓存的含义。您最后添加的帖子将不会显示。
添加posts时,可能需要使缓存失效。这意味着您需要从代码路径中添加新帖子的某个位置进行delete_transient()。
向现有数据系统添加缓存可能很困难,因为您必须容忍陈旧的数据,或者找到缓存需要失效的每个位置。缓存是计算机工程中的一个基本概念,部分原因在于它很难实现。
发布于 2017-07-03 13:28:16
为什么不使用W3超级缓存或类似的,并将其设置为缓存数据库查询和对象?它还将通过缩小资产和缓存整个站点及其html来帮助您。
https://stackoverflow.com/questions/44885586
复制相似问题