Query Posts -> Effizienz und Serverlast

  • Hallo Leute,

    ich muss euch mal bzgl. der Umsetzung einer Onepage-Seite fragen, auf der die Querys je nach Kategorie abgefragt werden. Wie verhält es sich da mit der Serverlast und kennt ihr vielleicht sogar bessere Möglichkeiten? Der Aufruf für insgesamt 6 Kategorien erfolg in der index.php... Es klappt so bereits mit der Ausgabe, aber es geht eben vielleicht besser oder eleganter?

    PHP
    <?php query_posts( 'category_name=CATNAME1' ); ?>
    <?php while ( have_posts() ) : the_post(); ?>
      ...content...
    <?php endwhile; ?>
    
    
    <?php query_posts( 'category_name=CATNAME2' ); ?>
    <?php while ( have_posts() ) : the_post(); ?>
      ...content...
    <?php endwhile; ?>

    usw....

    Einmal editiert, zuletzt von Maiskolben (22. Oktober 2015 um 04:00)

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Oh Schreck ... ein query_posts() Konstrukt. Die Perfomance ist in dem Fall nachrangig. Query_posts() ist ein Relikt und gehört verbannt! Lese mehr dazu bei Monika und Automattic.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Ok, ich nutze nur die Index Seite, auf der ich 1-2 posts maximal aus insgesamt 6 Kategorien ausgebe. Monikas Artikel kann ich insofern nicht umsetzen, da ich nicht weiß, wie ich die category-slug.php's in die Index integrieren könnte und wäre das denn nicht auch für die Perfomance shiddy?

    Ich bin auf jeden Fall gewillt dazu zu lernen, jedoch stehe ich nach wie vor auf dem Schlauch. Die Funktionen von der englischsprachigen Seite kann ich mir nun auch nicht wirklich für das Vorhaben bauen und wüsste auch nicht wie ich diese Anwenden sollte. Kannst Du da bitte noch etwas ausführlicher zu schreiben?

  • Hallo Maiskolben,

    auch ich nutze solche Konstrukte auf http://tatort-fans.de (Startseite). Die Performance hängt natürlich vom DB Server selbst ab. Wir haben dazwischen noch eine Memcache installation, die viele Requests puffert. Bei mir ist das Historisch so gewachsen, gerade weil ich meistens aus den Daten ein Array baue, um dann noch einmal selbst anders zu sortieren als WP das vorgesehen hat.

    Aber da muss ich dran. Eine schöne Übersicht kurz und knapp gibt es hier: http://wordpress.stackexchange.com/questions/1753…ts-vs-get-posts

  • Danke für den Link, Tatort! Ich suche auch noch nach einer Lösung davon wegzukommen. Gestaltet sich aber ein bißchen schwierig, da bei mir alles in/auf der index.php stattfindet.. :)

  • Danke für den Link, Tatort! Ich suche auch noch nach einer Lösung davon wegzukommen. Gestaltet sich aber ein bißchen schwierig, da bei mir alles in/auf der index.php stattfindet.. :)


    dann schau mal, ob du damit klar kommst


    http://www.texto.de/wordpress-cms-loop-spielereien-266/

    und da habe ich das mit dem Cache nicht angegeben

    brauchst du nämlich manches nicht wird ein wp-query sehr schnell


    Beispiel

    PHP
    'pagination'             => false,
    'update_post_meta_cache' => false,
    'update_post_term_cache' => false,


    brauchst du keine Pagination => musst du sie auch nicht nutzen, macht schneller
    brauchst du keine post meta Angaben => weg damit
    genauso post term cache

    was dies alles bewirkt => entweder liest dich ein oder versuchst es mit trial and error indem du beobachtest :-)

  • Du kannst es auch in die functions.php auslagern und dann nur noch die PHP Funktion aufrufen. Das macht den Quelltext in der index etwas übersichtlicher.

  • klappt alles, habe das von hier doch übernommen und bin jetzt wenigstens ein wenig sauberer Unterwegs. :) Lieben Dank! Auch für den Link zu Deiner Seite!
    Habe gerad ein komisches Problem mit einem Plugin, dem "Timeline Express". Immer wenn ich das Plugin deaktiviere, surrt die Ausgabe wie ein Kätzchen und alle Posts aus den Kategorien werden normal in der Quellcodereihenfolge ausgegeben. Aktiviere ich es jedoch wieder, scheint es so zu sein, dass das Plugin den Originalen Query-Feed sozusagen an anderer Stelle im Quelltext ausgibt. Ein sehr stranges Verhalten. Mit dem leeren des Caches und dem resetten nach jeder Kategorieausgabe ändert sich auch die scheinbar wahllose Reihenfolge der Posts, die nicht da sein dürften! Hat das von euch schonmal jemand erlebt?

    PS: also sobald ich die Kategorie der Timeline mit dem dazugehörigen Post ausgebe, tritt der Fehler auf...

    Einmal editiert, zuletzt von Maiskolben (22. Oktober 2015 um 18:19)

  • vielleicht machst du dir für jeden der 6 Aufrufe neue Queries auf (Multiple Loops): https://codex.wordpress.org/Class_Referenc…#Multiple_Loops

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • also sobald ich die Kategorie der Timeline mit dem dazugehörigen Post ausgebe, tritt der Fehler auf...

    Verwendest Du denn noch irgendwo query_posts()? Das wäre nämlich exakt eines der Probleme die damit auftauchen weil query_post() ohne einen Reset die Main Query komplett ersetzt.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • maxe: Ja, das habe ich schon ausprobiert. Die Ausgabe des Plugins hat sich auch verändert, aber es geht trotzdem noch nicht. jQuery Library ist auch auf dem aktuellen Stand... Hm, komisch alles... :)

    Einmal editiert, zuletzt von Maiskolben (22. Oktober 2015 um 19:08)

  • genau das war auch meine Befürchtung.

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • Da hat sich der Post überschnitten. Antwort an mensmaximus:

    Aktuell verwende ich das hier:

    Der Fehler tritt auf, wenn nun der Post mit der Timeline dazugeladen werden soll, dann verwurschtelt sich alles. Beim Ausprobieren habe ich mal die ersten beiden Kategorien weggenmommen, da hat die Einbindung der Timeline dazu geführt, dass auch die Kategorien geladen wurden, die nicht im Quelltext angesprochen wurden. Daher die Vermutung, dass das Plugin irgendwie den original Query-Stream verwertet... Es ist nun schon besser, aber es kann natürlich auch sein, dass das Plugin einfach nicht korrekt läuft. Hab es mit einem anderen Theme getestet, da läuft es allerdings problemlos... Keine Ahnung! :smile:

  • Oh mann, Leute! Wisst ihr woran das alles lag? Ich habe mal einfach aus Spass gepaart mit reinster Verzweiflung das Wordpresseigene jQuery mittels wp_enqueue_script() abgestellt und siehe da: alles wird angezeigt! :) Denn euch mal einen schönen Abend und lieben Dank für die Hilfe (Monika, Deine Seite ist schön informativ, sehr verständlich für Laien wie mich!). Als nächstes schmeiß ich alles aus wpquery raus, was ich nicht brauche.. Hat sich doch gelohnt der Abend. Lg, Maiskolben :D

  • das Wordpresseigene jQuery mittels wp_enqueue_script() abgestellt und siehe da: alles wird angezeigt!

    Dann hast Du ein Problem mit einem mega unsauber programmierten Theme oder Plugin. Oberste Direktive: Was WordPress bereits lädt wird niemals erneut geladen. Kein Plugin soll ein eigenes jQuery laden.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Ich mach mich grade schlau, wie ich Plugins dazu zwingen kann, das BoardJQ zu benutzen... Plugins müssen eigentlich auch immer über die wp_enqueue_srcipt() Routine gehen.. Naja, ich werd mir das mal in Ruhe anschauen...

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!