2017-07-03 9 views
0

Es gibt eine Menge von SQL-Abfragen in meinem Wordpress-Theme, zum Beispiel, 20 SQL-Abfrage in den letzten 6 hinzugefügt Beiträge. Also, normalerweise gibt es mindestens 100-150 Abfrage in meiner Website und meine Website wird wegen dieser verzögert.Wordpress Caching SQL-Abfragen

Ich hörte von transient_api und versuchte, Abfragen mit ihm zu cachen, aber ich scheiterte.

Hier ist meine letzte hinzugefügt Beiträge Code:

<?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"> 
. 
. 
. 

und ich versuchte, sie wie dieses Nach diesem Code

<?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); 


      ?> 

Zwischenspeichern auf der zweiten Refresh meiner Seite, meine letzte hinzugefügt Beiträge werden nicht angezeigt. Was mache ich falsch? Wie kann ich meinen Code reparieren?

Vielen Dank für Ihre Hilfe!

+0

Werfen Sie einen Blick auf mysql Abfrage-Cache, könnte es Ihre wp-Site ohne diese code-basierte Cache-Schicht verbessern –

+0

Danke für die Antwort, aber wie ich meine anderen Antworten erwähnt, werde ich dieses Thema verkaufen und ich muss in meinem Thema Caching tun Dateien – Solhan

+0

Sie wären nicht der erste, der Datenbankeinstellungen für ihr Produkt empfehlen würde :) –

Antwort

0

Ihr Code ignoriert Änderungen für den Wert von $catquery für zwölf Stunden, nachdem Sie es festgelegt haben. Das ist Caching. Ihre zuletzt hinzugefügten Beiträge werden nicht angezeigt.

Wahrscheinlich müssen Sie den Cache ungültig machen, wenn Sie Posts hinzufügen. Das heißt, Sie müssen use delete_transient() von irgendwo im Code-Pfad, der neue Beiträge hinzufügt.

Das Hinzufügen eines Caches zu einem vorhandenen Datensystem kann schwierig sein, da entweder veraltete Daten toleriert werden müssen oder an jeder Stelle gesucht werden muss, an der der Cache ungültig gemacht werden muss. Caching ist ein grundlegendes Konzept in der Computertechnik, teilweise weil es schwierig ist.

0

Warum nicht W3 Super-Cache oder ähnliches verwenden, und es einrichten, um die Datenbank Abfragen und Objekte zu cachen? Es hilft Ihnen auch, Assets zu minimieren und die gesamte Site und ihren HTML-Code zwischenzuspeichern.

+0

Es ist möglich, aber ich verkaufe dieses Thema und ich möchte Caching-System ** ohne Plugin ** für die nächste Version enthalten. – Solhan

+0

Also, wie O. Jones in seiner Antwort sagte, müssen Sie einen Anruf tätigen, um das Zwischenspeichern beim Hinzufügen eines neuen Posts zu löschen. Sie können dies tun, indem Sie einen benutzerdefinierten Hook hinzufügen. https://developer.wordpress.org/reference/functions/add_action/ Sie müssten die Methode aufrufen, um den Cache bei jedem neuen Post zu löschen oder auf einen vorhandenen Post zu aktualisieren. –

+0

Aber ich habe keine neuen Beiträge in meinen Tests hinzugefügt und die gepufferten Beiträge sind immer noch nicht erschienen. Muss ich _delete cache code_ hinzufügen, um meine im Cache gespeicherten Posts zu sehen? – Solhan