Hier zijn een paar persoonlijke dingen die ik altijd moet doen in mijn LAMP-applicaties.
-
Installeer mod_deflate voor apache en gebruik de gzip-handlers van PHP niet. Met mod_deflate kunt u statische inhoud comprimeren, zoals javascript/css/static html, evenals de gebruikelijke dynamische PHP-uitvoer, en u hoeft zich geen zorgen meer te maken over uw code.
-
Wees voorzichtig met .htaccess-bestanden! Het inschakelen van .htaccess-bestanden voor mappen in uw app betekent dat Apache het bestandssysteem constant moet scannen, op zoek naar .htaccess-richtlijnen. Het is veel beter om richtlijnen in de hoofdconfiguratie of een vhostconfiguratie te plaatsen, waar ze één keer worden geladen. Elke keer dat u een toegangsbestand op directoryniveau kunt verwijderen door het naar een hoofdconfiguratiebestand te verplaatsen, bespaart u schijftoegangstijd.
-
Bereid de databaselaag van uw toepassing voor om een of andere verbindingsmanager te gebruiken (ik gebruik een Singleton voor de meeste toepassingen). Het is niet erg moeilijk om te doen, en het verminderen van het aantal databaseverbindingen dat uw toepassing opent, bespaart bronnen.
-
Als u denkt dat uw toepassing aanzienlijk wordt belast, kan memcached wonderen verrichten. Houd dit in gedachten terwijl je je code schrijft... misschien zul je op een dag, in plaats van objecten te maken, ze uit de geheugencache halen. Een beetje vooruitziendheid maakt de implementatie pijnloos.
-
Zodra uw app actief is, stelt u de langzame querytijd van MySQL in op een klein getal en controleert u de langzame query zorgvuldig. Dit laat u zien waar uw probleemvragen vandaan komen en stelt u in staat uw zoekopdrachten en indexen te optimaliseren voordat ze een probleem worden.
-
Voor serieuze prestatie-tweakers, wil je PHP compileren vanaf de bron. Installeren vanuit een pakket installeert veel bibliotheken die je misschien nooit gebruikt. Aangezien PHP-omgevingen in elke instantie van een Apache-thread worden geladen, wordt zelfs een geheugenoverhead van 5 MB uit extra bibliotheken al snel 250 MB verloren geheugen als er 50 Apache-threads niet bestaan. Ik houd een lijst bij van de mystandard ./configure-regel die ik gebruik bij het bouwen van PHP hier , en ik vind dat het geschikt is voor de meeste van mijn toepassingen. Het nadeel is dat als je uiteindelijk een bibliotheek nodig hebt, je PHP opnieuw moet compileren om het te krijgen. Analyseer je code en test deze in een ontwikkelomgeving om er zeker van te zijn dat je alles hebt wat je nodig hebt.
-
Verklein uw Javascript.
-
Wees voorbereid op het verplaatsen van statische inhoud, zoals afbeeldingen en video, naar een niet-dynamische webserver. Schrijf uw code zodat alle URL's voor afbeeldingen en video gemakkelijk kunnen worden geconfigureerd om in de toekomst naar een andere server te verwijzen. Een voor statische inhoud geoptimaliseerde webserver kan gemakkelijk tientallen of zelfs honderden keren sneller worden bediend dan een dynamische inhoudserver.
Dat is wat ik uit mijn hoofd kan bedenken. Googlen op best practices voor PHP zal ook veel tips vinden over hoe je snellere/betere code kunt schrijven (zoals:echo
is sneller dan print
).