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: Schneller Parsen

    cplasa

    • Fördermitglied
    • Beiträge: 200
    • Geschlecht:
    Schneller Parsen
    am: 24. September 2015, 11:04:09
    Hallo Zusammen

    Minify JS/CSS,
    Zusammenfassen von CSS/JS,
    CSS-Sprites zum Verringern der Requests,
    Bereinigen von HTML Code (Umbrüche & Kommentare),
    GZIP/zlib-Kompression,
    Cache,
    CDN

    sind ja die gängigen Maßnahmen zur Ladezeitverbesserung.

    Nun habe ich mich gefragt, ob es die Möglichkeit gibt, die Parsetime an sich noch zu verbessern.

    Gehe ich beispielsweise einmal die application_top.php durch finde ich dort einige if-Anweisungen oder Funktionen von denen ich weiß, dass ich sie (entweder aktuell) oder sowieso nie benötigen werde.

    Kostet das ganze PHP-Rendering mit Bedingungsabfragen, deren Bedingungen sowieso nicht erfüllt werden nicht nur unnötige Zeit?

    Natürlich erübrigt sich die Frage, wenn ich den in meinen Augen überflüssigen oder nicht benötigten Code einfach entferne und selbst teste - nicht immer ist aber ersichtlich ob diese Teile gefahrlos entfernt werden können.

    Die Frage nun - gibt es hier bekannte Bremsen? Ich vermute mal, dass die im Footer ausgegebene Parsetime sowieso ein Instrument der Entwickler ist, um hier ein Auge darauf haben zu können - hat das schonmal jemand von euch vor diesem Hintergrund angepasst - und - macht das überhaupt Sinn oder hält sich die Ladezeitverbesserung durch solche Maßnahmen sowieso in Grenzen?

    Viele Grüße
    Christian

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

    Hansi73

    • Frisch an Board
    • Beiträge: 84
    Re: Schneller Parsen
    Antwort #1 am: 24. September 2015, 12:48:07
    Hi,

    das entfernen von Klarna hat etwa 40% der Laufzeit ausgemacht. Klarna wird anscheinend immer eingebunden, egal ob das Modul aktiv ist oder nicht. Wer es nicht braucht...

    Bonner

    • Fördermitglied
    • Beiträge: 848
    • Geschlecht:
    Re: Schneller Parsen
    Antwort #2 am: 24. September 2015, 13:43:59
    interessant...könntest Du uns ev. noch mitteilen, wo Du was entfernt hast?  :whistle:

    Bonner

    cplasa

    • Fördermitglied
    • Beiträge: 200
    • Geschlecht:
    Re: Schneller Parsen
    Antwort #3 am: 24. September 2015, 14:37:38
    Das mit Klarna habe ich auch schon entdeckt :-)
    Habe jetzt auch ein paar neue Erkentnisse dazu. Tatsächlich verringert sich der "Transferstart nach Connect" (Pagespeed Messung)

    Da ist bei mir jetzt mittlerweile schon einiges rausgeflogen.

    Z.b. Sind bei einem angepassten Template vermultlich längst nicht mehr alle Boxen des Standarttemplates in der index.html eingebungen. Folglich wäre auch zu überprüfen ob diese nicht in der /templates/deintemplate/source/boxes.php unnötigerweise bereitgestellt werden.

    Die Schnellkaufbox (add_a_quickie) ist bei uns z.B. nicht vorhanden.
    Folglich kann
    Code: PHP  [Auswählen]
    require_once(DIR_WS_BOXES . 'add_a_quickie.php');
    auskommentiert werden.

    Hier habe ich gleich die komplette IF-Regel auskommentiert, da sie nur eine Box enthält und diese bei uns ebenfalls nicht geladen wird
    Code: PHP  [Auswählen]
    if (isset($_SESSION['customer_id'])) {
         require_once(DIR_WS_BOXES . 'order_history.php');
    }
     

    ...und noch ein paar weitere.

    Das sind nun Beispiele des Templates betreffend die bei jedem anders aussehen können.

    Weiter habe ich in der application_bottom.php folgendes gekillt:

    Code: PHP  [Auswählen]
    // page parse time
    if (STORE_PAGE_PARSE_TIME == 'true') {
      $parse_time = number_format((microtime(true)-PAGE_PARSE_START_TIME), 3);
      error_log(strftime(STORE_PARSE_DATE_TIME_FORMAT) . ' - ' . getenv('REQUEST_URI') . ' (' . $parse_time . 's)' . "\n", 3, STORE_PAGE_PARSE_TIME_LOG);
    }
    if (DISPLAY_PAGE_PARSE_TIME == 'true') {
      $parse_time = number_format((microtime(true)-PAGE_PARSE_START_TIME), 3);
      echo '<div class="parseTime">Parse Time: ' . $parse_time . 's</div>';
    }

    Code: PHP  [Auswählen]
    // econda tracking
    if (TRACKING_ECONDA_ACTIVE == 'true') {
      require_once (DIR_WS_INCLUDES . 'econda/econda.php');
    }

    In der application_top.php

    Auch hier die parse time....
    Code: PHP  [Auswählen]
    // start the timer for the page parse time log
    define('PAGE_PARSE_START_TIME', microtime(true));

    "Wer ist Online" benötige ich dank Analytics nicht. Also:

    Code: PHP  [Auswählen]
    require_once (DIR_FS_INC.'xtc_update_whos_online.inc.php');
    & weiter unten

    Code: PHP  [Auswählen]
    // who's online functions
    xtc_update_whos_online();
    entfernen oder auskommentieren

    "Banner" habe ich auch nicht Also:
    Code: PHP  [Auswählen]
    require_once (DIR_FS_INC.'xtc_activate_banners.inc.php');
    require_once (DIR_FS_INC.'xtc_expire_banners.inc.php');
     
    & weiter unten

    Code: PHP  [Auswählen]
    // auto activate and expire banners
    xtc_activate_banners();
    xtc_expire_banners();
     
    entfernen oder auskommentieren

    Warnungen wer braucht Warnungen.... (auf eigene Gefahr)
    Code: PHP  [Auswählen]
    // set which precautions should be checked
    define('WARN_INSTALL_EXISTENCE', 'true');
    define('WARN_CONFIG_WRITEABLE', 'true');
    define('WARN_SESSION_DIRECTORY_NOT_WRITEABLE', 'true');
    define('WARN_SESSION_AUTO_START', 'true');
    define('WARN_DOWNLOAD_DIRECTORY_NOT_READABLE', 'true');

    Mit Warnungen & "After Install Prüfungen" (die liegen schon ein bisschen zurück) geht es weiter in der header.php....

    Code: PHP  [Auswählen]
    // check if the 'install' directory exists, and warn of its existence
    if (WARN_INSTALL_EXISTENCE == 'true') {
      if (file_exists(dirname($_SERVER['SCRIPT_FILENAME']) . '/' . DIR_MODIFIED_INSTALLER)) {
        xtc_output_warning(sprintf(WARNING_INSTALL_DIRECTORY_EXISTS, dirname($_SERVER['SCRIPT_FILENAME']) . '/_installer'));
      }
    }

    // check if the configure.php file is writeable
    if (WARN_CONFIG_WRITEABLE == 'true') {
      if ( (file_exists(dirname($_SERVER['SCRIPT_FILENAME']) . '/includes/configure.php')) && (is_writeable(dirname($_SERVER['SCRIPT_FILENAME']) . '/includes/configure.php')) ) {
        xtc_output_warning(sprintf(WARNING_CONFIG_FILE_WRITEABLE, dirname($_SERVER['SCRIPT_FILENAME']) . '/includes/configure.php'));
      }
    }

    // check if the session folder is writeable
    if (WARN_SESSION_DIRECTORY_NOT_WRITEABLE == 'true') {
      if (STORE_SESSIONS == '') {
        if (!is_dir(xtc_session_save_path())) {
          xtc_output_warning(WARNING_SESSION_DIRECTORY_NON_EXISTENT);
        } elseif (!is_writeable(xtc_session_save_path())) {
          xtc_output_warning(WARNING_SESSION_DIRECTORY_NOT_WRITEABLE);
        }
      }
    }

    // check session.auto_start is disabled
    if ( (function_exists('ini_get')) && (WARN_SESSION_AUTO_START == 'true') ) {
      if (ini_get('session.auto_start') == '1') {
        xtc_output_warning(WARNING_SESSION_AUTO_START);
      }
    }

    if ( (WARN_DOWNLOAD_DIRECTORY_NOT_READABLE == 'true') && (DOWNLOAD_ENABLED == 'true') ) {
      if (!is_dir(DIR_FS_DOWNLOAD)) {
        xtc_output_warning(WARNING_DOWNLOAD_DIRECTORY_NON_EXISTENT);
      }
    }

    Dann Shopgate (kenne ich nicht - brauche ich nicht)
    Code: PHP  [Auswählen]
    <?php
    /******** SHOPGATE **********/
    if(strpos(MODULE_PAYMENT_INSTALLED, 'shopgate.php') !== false && strpos($_SESSION['customers_status']['customers_status_payment_unallowed'], 'shopgate') === false){
      echo $shopgateJsHeader;
    }
    /******** SHOPGATE **********/
    ?>

    &
    Code: PHP  [Auswählen]
    /******** SHOPGATE **********/
    if(strpos(MODULE_PAYMENT_INSTALLED, 'shopgate.php') !== false && strpos($_SESSION['customers_status']['customers_status_payment_unallowed'], 'shopgate') === false){
      include_once (DIR_FS_CATALOG.'includes/external/shopgate/base/includes/header.php');
    }
    /******** SHOPGATE **********/
     

    usw usw... habe noch ein paar mehr angepasst aber das sieht ja in jedem Shop u.u ganz anders aus.

    Viel ist es nicht, habe durch die Anpassungen im Schnitt aber 0,1 - 0,15 Sek gewonnen.
    Alles natürlich auf eigene Gefahr

    Werfe also gerade nach und nach unnötigen Balast für ein wenig mehr Tempo ab. Vielleicht weiß jemand wo sich noch ein besonders schweres Pfund versteckt hält :D

    Viele Grüße
    Christian

    Hansi73

    • Frisch an Board
    • Beiträge: 84
    Re: Schneller Parsen
    Antwort #4 am: 24. September 2015, 14:59:08
    Hi,

    in /includes/modules/product_info.php

    etwa Zeile 48:

    Code: PHP  [Auswählen]
    //  include_once(DIR_WS_INCLUDES.'modules/payment/klarna/display_klarna_price.php'); // Klarna payment module integration

    Bringt natürlich nur auf den Produktseiten eine wesentiche Verbesserung.

    Die Zeit wird nur noch dem Admin angezeigt:

    Code: PHP  [Auswählen]
    // page parse time
    if (STORE_PAGE_PARSE_TIME == 'true' && $_SESSION['customer_id'] == '1') {
      $parse_time = number_format((microtime(true)-PAGE_PARSE_START_TIME), 3);
      error_log(strftime(STORE_PARSE_DATE_TIME_FORMAT) . ' - ' . getenv('REQUEST_URI') . ' (' . $parse_time . 's)' . "\n", 3, STORE_PAGE_PARSE_TIME_LOG);
    }
    if (DISPLAY_PAGE_PARSE_TIME == 'true' && $_SESSION['customer_id'] == '1') {
      $parse_time = number_format((microtime(true)-PAGE_PARSE_START_TIME), 3);
      echo '<div class="parseTime">Parse Time: ' . $parse_time . 's</div>';
    }

    Ansonsten hat Christian schon einiges beschrieben.

    Bonner

    • Fördermitglied
    • Beiträge: 848
    • Geschlecht:
    Re: Schneller Parsen
    Antwort #5 am: 24. September 2015, 15:15:20
    Danke für die Tips, da werde ich mich mal am Wochenende dran setzen und anschließend berichten, was es gebracht hat.

    Bonner

    cplasa

    • Fördermitglied
    • Beiträge: 200
    • Geschlecht:
    Re: Schneller Parsen
    Antwort #6 am: 24. September 2015, 15:58:44
    @hansi73

    Klarna und econda hab ich namentlich durcheinandergewirbelt - das hatte ich noch nicht gesehen... danke für den Tipp! :-)

    Hansi73

    • Frisch an Board
    • Beiträge: 84
    Re: Schneller Parsen
    Antwort #7 am: 24. September 2015, 18:22:29
    Überprüfe mal dein Template bezüglich strukturierter Daten...

    https://developers.google.com/structured-data/testing-tool/?url=https://www.conceptrun.de/Aussenleuchten/Wandleuchten/LED-Wandleuchte-ROM-Wandlampe-Aussenleuchte-2-Flammig-Edelstahl-Up-Down-GU10-230V-Form-A1--51.html

    Am besten findet man mit XAMPP und Netbeans die jeweiligen Laufzeiten der Module. Danach kann man sich daran machen was überhaupt Sinn ergibt anstatt einfach nur try & error.

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Schneller Parsen
    Antwort #8 am: 24. September 2015, 22:13:36
    Hallo Christian

    Um die Performance zu steigern kann man in 'includes/classes/smarty_2.6.27/Smarty.class.php' folgende Variable auf 'false' setzen.
    Code: PHP  [Auswählen]
        /**
         * This tells Smarty whether to check for recompiling or not. Recompiling
         * does not need to happen unless a template or config file is changed.
         * Typically you enable this during development, and disable for
         * production.
         *
         * @var boolean
         */

        var $compile_check   =  true;
     

    Mehr Info hier -> http://www.smarty.net/docsv2/de/variable.compile.check.tpl

    Gruss
    Hanspeter

    Hansi73

    • Frisch an Board
    • Beiträge: 84
    Re: Schneller Parsen
    Antwort #9 am: 25. September 2015, 08:18:05
    Morgen,

    ich konnte nach umstellen dieser Variable keinen Unterschied sehen. Wie viel soll das bringen?

    cplasa

    • Fördermitglied
    • Beiträge: 200
    • Geschlecht:
    Re: Schneller Parsen
    Antwort #10 am: 25. September 2015, 08:53:27
    Super! Das mit den strukturierten Daten habe ich gar nicht auf dem Schirm gehabt - kannte dieses Tool auch nicht. Mache mich da mal dran. Viele Grüße

     :-)

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Schneller Parsen
    Antwort #11 am: 25. September 2015, 08:59:23
    Morgen,

    ich konnte nach umstellen dieser Variable keinen Unterschied sehen. Wie viel soll das bringen?
    Solche Massnahmen wie diese bringen beim parsen des PHP-Codes im Allgemeinen Performancesteigerungen im Bereich von Mikro- bis Milli-Sekunden.

    Gruss
    Hanspeter

    Hansi73

    • Frisch an Board
    • Beiträge: 84
    Re: Schneller Parsen
    Antwort #12 am: 25. September 2015, 09:26:17
    Ok, den Cache sollte man ja nach diversen Beiträgen aufgrund von Problemen lieber ausgeschaltet lassen?!? Auf dem Testserver bringt das natürlich am meisten. Gerade das zwischenspeichern von Datenbankabfragen.
    6 Antworten
    6994 Aufrufe
    15. Mai 2011, 22:14:41 von cYbercOsmOnauT
    2 Antworten
    2115 Aufrufe
    27. Juli 2021, 08:55:37 von voodoopupp
    0 Antworten
    1781 Aufrufe
    09. April 2016, 14:45:21 von webald
               
    anything