Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Langsamer Seitenaufbau durch viele Bewertungen

    xtc-user09

    • Schreiberling
    • Beiträge: 265
    Langsamer Seitenaufbau durch viele Bewertungen
    am: 20. Oktober 2019, 12:55:50
    Hallo,
    ich habe festgestellt, dass bei mir bei allen modified Shops egal welcher Version Product_Info-Seiten mit vielen Bewertungen beim Artikel sehr langsam geladen werden.
    Hat ein Artikel z.B. nur 5 Bewertungen, wird die Seite blitzschnell geladen. Hat der Artikel aber z.B. 100 Bewertungen dauert es bis zu 3 Sekunden.
    Ansonsten gibt es keine Unterschiede zwischen den Artikeln (Beschreibungstext ungefähr gleich lang, Bilder identische Dateigröße etc.).

    Gibt es eine Möglichkeit, die Datenbankabfrage für das Laden der Bewertungen zu beschleunigen oder ähnliches?

    Danke für die Hilfe!

    Linkback: https://www.modified-shop.org/forum/index.php?topic=40520.0

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Langsamer Seitenaufbau durch viele Bewertungen
    Antwort #1 am: 20. Oktober 2019, 14:29:42
    Meinst du mit Bewertungen die Rezensionen, oder hast du ein spezielles Modul eingebaut?

    Gruss
    Hanspeter

    Roberto75

    • Viel Schreiber
    • Beiträge: 836
    Re: Langsamer Seitenaufbau durch viele Bewertungen
    Antwort #2 am: 20. Oktober 2019, 15:07:39
    Das würde mich auch interessieren. Wie kann man viele Produkt-Bewertungen, die über die Bewertungsfunktion des Shops abgegeben werden, auf mehrere Seiten verteilen, z. B. 100 auf 5 Seiten? Es ist nur möglich, die Maximum-Anzahl zu bestimmen.

    Gruß

    Robert

    xtc-user09

    • Schreiberling
    • Beiträge: 265
    Re: Langsamer Seitenaufbau durch viele Bewertungen
    Antwort #3 am: 20. Oktober 2019, 15:11:10
    Genau ich meine Rezensionen.

    Sie werden ja normal im Tab angezeigt.

    Ich habe es auch schon so gebaut, dass beim Öffnen des Tabs nur 5 Rezensionen mit Sterne und Text angezeigt werden und man auf "weitere Bewertungen" klicken muss und dann erst alle Bewertungen untereinander angezeigt werden. Geladen werden beim Seitenaufruf aber natürlich alle Bewertungen auf einmal (es wird nichts per ajax o.ä. nachgeladen).

    Ich verwende kein spezielles Modul, nur die reine Shopbewertungsfunktion.

    Zu sehen z.B. hier: https://stable.modified-shop.org/Testkategorie-1/Testartikel-4::4.html#horizontalTab4

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Langsamer Seitenaufbau durch viele Bewertungen
    Antwort #4 am: 20. Oktober 2019, 15:20:30
    Hallo xtc-user09,

    die Datenbankabfrage der Rezensionen wird in der Datei includes/classes/product.php mit folgender Funktion ausgeführt.

    Code: PHP  [Auswählen]
      /**
       * getReviews
       *
       * @return array
       */

      function getReviews($pID = '') {
        if ($pID == '') {
          $pID = $this->pID;
        }
        $reviews_query = xtc_db_query("SELECT r.reviews_rating,
                                              r.reviews_id,
                                              r.customers_name,
                                              r.date_added,
                                              r.last_modified,
                                              r.reviews_read,
                                              rd.reviews_text
                                         FROM "
    .TABLE_REVIEWS." r
                                         JOIN "
    .TABLE_REVIEWS_DESCRIPTION." rd
                                              ON r.reviews_id = rd.reviews_id
                                                 AND rd.languages_id = '"
    .(int)$_SESSION['languages_id']."'
                                        WHERE r.products_id = '"
    .(int)$pID."'
                                          AND r.reviews_status = '1'
                                     ORDER BY r.reviews_id DESC"
    );
        $data_reviews = array ();
        if (xtc_db_num_rows($reviews_query)) {
          while ($reviews = xtc_db_fetch_array($reviews_query)) {
            $img = 'templates/'.CURRENT_TEMPLATE.'/img/stars_'.$reviews['reviews_rating'].'.gif';
            if (!is_file(DIR_FS_CATALOG.$img)) {
              $img = 'templates/'.CURRENT_TEMPLATE.'/img/stars_'.$reviews['reviews_rating'].'.png';        
            }
            $data_reviews[] = array (
                'AUTHOR' => $reviews['customers_name'],
                'DATE' => xtc_date_short($reviews['date_added']),
                'RATING' => xtc_image($img, sprintf(TEXT_OF_5_STARS, $reviews['reviews_rating'])),
                'RATING_MICROTAG' => xtc_image($img, sprintf(TEXT_OF_5_STARS, $reviews['reviews_rating']),'','','itemprop="rating"'),
                'RATING_VOTE' => $reviews['reviews_rating'],
                'TEXT' => nl2br($reviews['reviews_text'])
              );
            if (count($data_reviews) == PRODUCT_REVIEWS_VIEW) break;
          }
        }
        return $data_reviews;
      }
     

    Die obige Datenbankabfrage scheint mir nicht sehr aufwändig zu sein, deshalb frage ich mich ob nicht ev. das Rendering im Browser diese Mehrzeit verursacht.

    Vorschlag:
    Setze testweise im Admin unter Konfiguration -> Maximum Werte  bei Rezensionen in Artikeldetails den Wert auf 1 und schaue dann im Shopfrontend nach ob Produktinfoseiten mit vielen Bewertungen beim Artikel, von denen jetzt natürlich nur einer angezeigt wird, sehr langsam geladen werden, wenn ja dürfte es tatsächlich an der Datenbankabfrage liegen, weil aus der Datenbank bei der Abfrage auch dann alle Rezensionen geholt werden wenn nur eine angezeigt wird, wenn nein ist wohl eher das Rendern der Seite im Browser für diese Mehrzeit verantwortlich.

    Gruss
    Hanspeter

    xtc-user09

    • Schreiberling
    • Beiträge: 265
    Re: Langsamer Seitenaufbau durch viele Bewertungen
    Antwort #5 am: 20. Oktober 2019, 19:36:12
    Danke für den Tipp! Ja, mit setzen auf 1 wird nur noch eine Bewertung angezeigt und es lädt sofort blitzschnell.

    Jetzt stellt sich nur die Frage, ob man vielleicht durch einen Index in der Datenbank die Ausgabe der Bewertungen beschleunigen kann o.ä.?

    Alternativ könnte ich z.B. nur 5 Bewertungen anzeigen lassen und mit Klick auf "Alle Bewertungen sehen" auf die "product_reviews.php?products_id=XXX" verlinken. Allerdings würde google dann die Bewertungen von der Detailseite nicht mehr korrekt indexieren und bei den Snippets sie vielleicht auch nicht mehr anzeigen.

    Mir fällt gerade noch ein: Modifiziert hatte ich, dass beim Tab "Rezensionen" dahinter in Klammern die Anzahl abgegebener Bewertungen steht "(12)". Kann das etwas damit zu tun haben?
    Das war dieses "Modul": https://www.modified-shop.org/forum/index.php?topic=3541.0

    Code: PHP  [Auswählen]
    if($reviews['rating'] == "") {
                    $bewertung_anzahl = ('0');
                            } else {
                    $bewertung_anzahl = ($reviews['rating']);
                            }

    Code: PHP  [Auswählen]
    'PRODUCTS_REVIEWS_TEXT' => $bewertung_anzahl,

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Langsamer Seitenaufbau durch viele Bewertungen
    Antwort #6 am: 20. Oktober 2019, 22:03:57
    [..]
    Jetzt stellt sich nur die Frage, ob man vielleicht durch einen Index in der Datenbank die Ausgabe der Bewertungen beschleunigen kann o.ä.?
    [...]

    Lese bitte nochmals meine Antwort #4, dann wirst du feststellen das bei folgendem Resultat,

    Danke für den Tipp! Ja, mit setzen auf 1 wird nur noch eine Bewertung angezeigt und es lädt sofort blitzschnell.
    [...]

    die Ursache für das langsame Laden der Seite nicht bei der Datenbankabfrage liegt und somit ein zusätzlicher Index o.ä. in der Datenbank nichts bringt.

    Gruss
    Hanspeter

    Roberto75

    • Viel Schreiber
    • Beiträge: 836
    Re: Langsamer Seitenaufbau durch viele Bewertungen
    Antwort #7 am: 21. Oktober 2019, 14:25:48
    Noch einmal meine Frage:
    Wie kann man viele Bewertungen auf der Produktseite auf mehrere Folgeseiten verteilen, so wie bei der Anzeige der gesamten Rezensionen (reviews.php)? Da kann man dann auf die entsprechende Folgeseite klicken.

    xtc-user09

    • Schreiberling
    • Beiträge: 265
    Re: Langsamer Seitenaufbau durch viele Bewertungen
    Antwort #8 am: 21. Oktober 2019, 15:53:15
    Sorry ich verstehe! Weißt du wie ich das Rendering der Rezensionen schneller bekomme? Ist ja eigentlich nur bisschen Text und Sterne...

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Langsamer Seitenaufbau durch viele Bewertungen
    Antwort #9 am: 21. Oktober 2019, 22:54:16
    Hallo xtc-user09,

    kann dein Problem nicht nachvollziehen, in meinem Testshop habe ich zu einem Produkt 110 Rezensionen eingepflegt, siehe Link, dadurch hat sich die Parse-Time um ca. 0,04 Sekunden und die Ladezeit um ca. 0,3 Sekunden verlängert. Also ich denke ich kann dir so aus der Ferne nicht weiterhelfen.

    https://hpzeller.com/modified2022/Testkategorie-1/Ispytuemyj-produkt::3.html

    Gruss
    Hanspeter

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Langsamer Seitenaufbau durch viele Bewertungen
    Antwort #10 am: 21. Oktober 2019, 23:22:48
    Hallo Robert,

    bei der Anzeige der gesamten Rezensionen wird die Paginierung vermittels der shopeigenen Paginierungsklasse "splitPageResults" gemacht, diese bedingt aber jeweils einen Seitenreload und scheint mir deshalb innerhalb von Tabs, da der Aufwand erhelich ist, nicht geeignet, einfacher scheint mir hier eine Javascript Lösung zu sein, dazu gibt es jQuery Plugins, siehe Links.

    https://pagination.js.org
    https://www.jqueryscript.net/blog/best-pagination-plugins.html

    Gruss
    Hanspeter
    32 Antworten
    17704 Aufrufe
    21. Juni 2011, 22:50:58 von skorp
    4 Antworten
    13397 Aufrufe
    26. Januar 2017, 12:18:26 von Jonas
    2 Antworten
    3303 Aufrufe
    08. Juni 2016, 10:27:15 von hpzeller
    3 Antworten
    1744 Aufrufe
    17. November 2019, 17:54:47 von sEdeMi