Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Wordpress缓存SQL查询_Php_Mysql_Wordpress - Fatal编程技术网

Php Wordpress缓存SQL查询

Php Wordpress缓存SQL查询,php,mysql,wordpress,Php,Mysql,Wordpress,我的wordpress主题中有很多sql查询, 例如,在最近6篇文章中添加了20个sql查询。所以,通常在我的网站中有至少100-150个查询,我的网站加载延迟就是因为这个原因 我听说了transient_api,并试图用它缓存查询,但失败了 这是我最后添加的帖子代码: <?php $gostermeid = $gosterme; $kategoriid = $kategori; $catquery = new WP_Query( 'cat=:-'.$gosterm

我的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 );


            ?>

在此代码之后,在第二次刷新我的页面时,我最后添加的帖子不会显示。我做错了什么?如何修复我的代码


谢谢你的帮助

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

添加帖子时,可能需要使缓存无效。这意味着您需要从添加新帖子的代码路径中的某个地方开始


将缓存添加到现有数据系统可能很困难,因为您必须容忍过时的数据,或者找到缓存需要失效的每个位置。缓存是计算机工程中的一个基本概念,部分原因是它很难实现。

为什么不使用W3超级缓存或类似的功能,并将其设置为缓存数据库查询和对象?它还可以帮助您缩小资产规模,缓存整个网站及其html。

这是可能的,但我正在销售这个主题,我想在下一个版本中包括不带插件的缓存系统。因此,正如O.Jones在回答中所说,您需要打电话删除添加新帖子时的缓存。您可以通过添加自定义挂钩来完成此操作。您需要调用该方法来删除每个新帖子上的缓存或更新现有帖子。但是我在测试中没有添加任何新帖子,缓存的帖子仍然没有显示。我是否必须添加删除缓存代码才能查看缓存的帖子?将缓存临时更改为一两分钟。试试这个:谢谢你的代码,但它并没有减少查询数量,同样,看看mysql查询缓存,如果没有这个基于代码的缓存层,它可能会改进你的wp站点。谢谢你的回答,但正如我提到的其他回复,我将出售此主题,我必须在我的主题文件中进行缓存您不会是第一个为其产品提供数据库设置建议的人:)Breeze是一个缓存插件,它为您的所有WordPress缓存管理需求提供了最完整的一套功能。在发送此电子邮件时,它有20000多个活动安装,并且数量正在快速增长。它完全免费提供所有行业标准功能。