Wie kann ich die performance dieser query_posts-Schleife verbessern?

Ich habe eine WordPress-Seitenvorlage erstellt, um einen benutzerdefinierten XML-Feed für bestimmte WordPress-Posts auf meiner Website zu erstellen. Insbesondere rendert die Seitenvorlage XML und enthält nur bestimmte benutzerdefinierte Beitragstypen und nur dann, wenn diese Beiträge bestimmte Metadaten enthalten.

Ich verwende die Daten, um WordPress-Inhalte an eine iOS-Anwendung zu senden. Es scheint großartig zu funktionieren; Die Antwortzeiten vom Server variieren jedoch und schlagen häufig fehl. Mein Hosting-Unternehmen (MediaTemple) hat vorgeschlagen, dass ich die performance verbessern könnte, indem ich die databaseabfrage effizienter mache.

Gibt es Standardoptimierungstipps für diese Art von Abfrage?

<?php $numposts = -1; $posts = query_posts( '&showposts=' . $numposts . '&post_type=listings' ); header("Content-Type: application/rss+xml; charset=UTF-8"); echo ''; ?>   My custom feed ID, 'mymeta', true) ) { ?>       

Solutions Collecting From Web of "Wie kann ich die performance dieser query_posts-Schleife verbessern?"

Nicht sicher, wie dramatisch das sein wird, aber es sollte trotzdem besser werden:

 < ?php /** * You can try forcibly splitting the query (grabbing IDs *then* all fields) * Works well for large post results. (available WP 3.4+) */ add_filter( 'split_the_query', '__return_true' ); $posts = get_posts( array( 'post_type' => 'listings', 'posts_per_page' => -1, /* Disable term caching ONLY if you're not using them in your loop. */ 'update_post_term_cache' => false, /* Ensures SQL_CALC_FOUND_ROWS is disabled */ 'no_found_rows' => true, /* If you're only operating on these, filter out at the query stage rather than the loop. */ 'meta_key' => 'mymeta', )); header( 'Content-Type: application/rss+xml; charset=UTF-8' ); echo '< ?xml version="1.0"?>'; ?>   My custom feed < ?php foreach ( $posts as $post ) : ?>    < ?php endforeach ?>   

Sie können dafür die Transient API anschließen und die Ergebnisse der wp_query in Ihrer database für 1 – 2 Stunden speichern …

Im WordPress Plugin Buch von Wrox gibt es ein großartiges Beispiel für diese Art von Abfrage oder versuchen Sie sich Justin Tadlocks Website anzuschauen