2017-07-03 135 views
0

有我的wordpress主题很多SQL查询, 例如,去年6月20 SQL查询添加帖子。所以,我的网站通常会有最少100-150的查询,而我的网站因为这个原因而延迟加载。WordPress的缓存SQL查询

我听说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); 


      ?> 

此代码后,在我的页面的第二刷新,我的最后添加帖子没有显示。我究竟做错了什么?我如何修复我的代码?

感谢您的帮助!

+0

看看mysql的查询缓存,它可能会改善你的wp站点,而不需要这个基于代码的缓存层 –

+0

感谢您的回答,但正如我提到我的其他答复,我会出售这个主题,我必须缓存在我的主题文件 – Solhan

+0

你不会是第一个建议他们的产品的数据库设置:) –

回答

0

您的代码在您设置后的12小时内将的值更改为$catquery。这就是缓存的含义。您最后添加的帖子不会显示。

添加帖子时,您可能需要使缓存无效。这意味着您需要在代码路径中添加新帖子的地方登录use delete_transient()

添加缓存到现有的数据系统是很困难的,因为你必须要么容忍陈旧的数据或者找到每个地方缓存需要被无效。缓存是计算机工程的基础概念,部分原因在于它很难。

0

为什么不利用W3超高速缓存或类似的,并且将它设置为缓存数据库查询和对象?它还将通过缩小资产,缓存整个网站及其html来帮助您。

+0

这是可能的,但我卖这个主题,我想包括缓存系统**没有插件**为下一个版本。 – Solhan

+0

正如O. Jones在他的回答中所说的那样,您需要打电话来删除添加新帖子的缓存。您可以通过添加自定义挂钩来完成此操作。 https://developer.wordpress.org/reference/functions/add_action/ 您需要调用方法来删除每个新帖子上的缓存或更新到现有帖子。 –

+0

但我没有在我的测试中添加任何新帖子,并且缓存的帖子仍然没有显示出来。我是否必须添加_delete缓存代码_来查看我的缓存文章? – Solhan