2017-07-03 17 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"> 
. 
. 
. 

そして私は私のページの第2のリフレッシュ、私の最後に追加された上で、このコードの後に​​この

<?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クエリキャッシュを見てみると、このコードベースのキャッシュ層なしで改善する可能性があります –

+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

関連する問題