Je website versnellen, deel 1.

ICTscripters maakt gebruik van cookies. Door het gebruiken en browsen naar onze site gaat je automatisch akkoord met het gebruik van cookies. Klik hier voor meer informatie

  • Hallo,

    ik was bezig met het optimaliseren van mijn site.

    Via Google PageSpeed Insights, stond erbij mijn html te minifiën.

    Hiervoor heb ik het volgende gedaan;


    PHP Source Code: index.php

    1. <?php
    2. function compress_output($buffer) {
    3. $zoeken = array(
    4. '/\>[^\S ]+/s', //haalt witregels na de tag weg
    5. '/[^\S ]+\</s', // haalt witregels voor de tag weg
    6. '/(\s)+/s' // verkleint meerdere spaties / witregels
    7. );
    8. $vervangen = array(
    9. '>',
    10. '<',
    11. '\\1'
    12. );
    13. $buffer = preg_replace($zoeken, $vervangen, $buffer);
    14. return $buffer;
    15. }
    16. ?>
    Laat alles zien

    Dit is al de functie die je het best bovenaan je index.php of dergelijke zet.

    Dan heb je het volgende nodig:

    PHP Source Code: index.php

    1. ob_start("compress_output");
    En sluit je deze af met


    PHP Source Code: index.php-einde

    1. <?php
    2. ob_end_flush();
    3. ?>
    En dan zal je html verkleint zijn, voorbeeld zie je simpel in de broncode van iweb.space/

    1,074x gelezen

Reacties 3

  • P.Yntema -

    Heel erg bedankt! Heeft me erg geholpen en het resultaat is ook echt te merken.

  • Ferhat.Remory -

    Dank je voor je antwoord. Ik heb je stap 3 toegepast. Tevens zal ik nog meerdere blogberichten maken om in het algemeen alles te versnellen.

  • FangorN -

    Interessant idee, maar een aantal opmerkingen.

    1. Heb je dit al eens vergeleken met de native PHP-functie php.net/manual/en/function.ob-gzhandler.php hoe deze zich verhoudt in compressie en performance? Een overzichtspagina van een beheerscherm van mijn site ging daarmee van 32.3K naar 2.6K. GZIP maakt waarschijnlijk handig gebruik van het feit dat je pagina-opbouw een zekere lijn vertoont, vervolgens kunnen deze "herhalende delen" efficiënter gecomprimeerd worden. Probeer het eens uit :).

    Bijkomend voordeel: je broncode blijft leesbaar.

    2. ob_end_flush() is een expliciete flush, maar is volgens mij niet per se nodig. Als je script eindigt dan vindt er sowieso een "impliciete" flush plaats voor zover ik weet, oftewel, alle inhoud die nog in buffers zat wordt automatisch naar output ("het scherm") gestuurd.

    3. De naam sanitize_output is enigszins misleidend. Het maakt geen output "veilig" of "schoon". Een betere naam is wellicht "compress_output" ofzo.

    4. Wat ook interessant is voor de snelheid van het serveren van een pagina is het cachen (van delen) ervan. Hiervoor gebruik je (indirect) ook output buffering. Stel je hebt een of ander statisch artikel wat tot stand komt door het ophalen van record(s) uit een database, dan het toepassen van allerlei regexps voor formatting etc (denk aan UBB-code). Als je dit proces output buffert en je je artikel vervolgens opslaat (in je database, of in een los bestand) als HTML dan kun je deze veel sneller serveren (je echo'd simpelweg de HTML-kolom van het record of je include het HTML-bestand) dan wanneer je deze bewerkingen telkens dynamisch opnieuw uitvoert. Als je het artikel wijzigt ververs je deze cache, het genereren van deze nieuwe HTML-variant is dan alleen de eerste keer "traag" (kost enkele milliseconden meer).

    Als het doel is om de laadtijd van een webpagina te verkorten zijn er een heleboel mogelijkheden.