Vaak API Performance Technieken
Websites zijn ontworpen om te worden benaderd door particulieren, en als zodanig de neiging te vertrouwen op de relatief lage snelheid van de gebruiker om alle prestaties knelpunten te voorkomen. Deze techniek faalt jammerlijk met API's, omdat ze zullen worden verbruikt door andere servers met snelle verbindingen, vaak alleen ontworpen met hun eigen prestaties in het achterhoofd (ze zal niet het cachegeheugen van uw antwoorden voor u, en zal in plaats daarvan doen precies hetzelfde verzoek keer op keer). Het ontwerpen van uw API met de prestaties in het achterhoofd kan helpen om de server snel, zelfs als er veel aanvragen worden gedaan, en zal ertoe bijdragen dat toekomstige hardware-upgrades de gewenste taken kunnen volbrengen.
Caching DataVaak beide websites en API's verzoek gegevens uit de database iedere keer dat een verzoek is gedaan, hoewel de gegevens die worden gebruikt om de respons veranderingen zelden bevolken. Dit, gecombineerd met de technieken database normalisatie geleerd sinds het begin van de tijd, betekent dat elk van deze aanvragen waarschijnlijk is het maken van ten minste een zoekopdracht toetreding tot de resultaten van meerdere tabellen, eventueel meerdere queries. Als uw gegevens niet aan het veranderen is dat vaak, overwegen caching de respons. Neem bijvoorbeeld de fictieve Bob's Video website. Elke keer als iemand beide standpunten gedetailleerde informatie over een film op zijn website of het verzoek het door zijn API, zijn server draait drie vragen: een query die de volledige titel van de film, plot lijn, en rating, een andere query met een gezamenlijke query wordt uitgevoerd ophalen vindt gedetailleerde informatie over elk van de cast-leden, en een laatste vraag om te bepalen verhuur status van de film. Dit is een gigantische verspilling van middelen; eens een film wordt uitgebracht, het enige antwoord dat zal veranderen is de verhuur status. Toch, elke keer dat de pagina wordt geladen, wordt de data opnieuw om uit de database. Het zou veel logischer om ofwel een statische pagina te gebruiken voor vrijgegeven films (bevolken huur status dynamisch), of op zijn minst cache alle informatie van de film en ophalen van de huur status dynamisch.
Slimmer Gebruik van databasevragenHoewel caching van gegevens is een uitstekende methode voor het verminderen van het aantal vragen die u gebruikt, is het niet altijd nodig. Zorg ervoor dat u de meeste uit elke zoekopdracht die u gebruikt. Vele malen dubbele gegevens wordt gevraagd, terwijl de afhandeling van een enkel verzoek, dit gebeurt vaak wanneer verschillende functies moeten dezelfde gegevens, maar ze doen niets af aan elkaar, zodat ze het niet eens met hun resultaten. Denk ofwel bewerken van uw script om alle benodigde gegevens zelf, dan verkrijgen uit de gegevens doorgeven aan de functies die het nodig hebben, of het creëren van een abstractie laag met een object dat zorgt voor het verkrijgen van informatie uit de databank alleen wanneer dit nodig is. Zodra u met uw database vragen om hun volle, beginnen werken aan het verbeteren van de snelheid van de vragen zelf. Nooit beginnen queries met SELECT * FROM - aanvraag alleen de velden die u daadwerkelijk nodig hebt. Ook onderzoekt zowel uw vragen en uw database. Probeer ervoor te zorgen dat de velden die u uw keuze baseren op zijn ofwel primaire sleutels of ten minste geïndexeerd door de database server. Reactie CachingOverweeg een geval van een Video Store API, waarmee gebruikers informatie op films aanvraag. Met een kleine verandering ontwerp (bewegend verhuur status aan zijn eigen vraag, in plaats van het met elke aanvraag), caching veel nieuwe mogelijkheden aandienen. Omdat de reactie niet los van die daarom vraagt, een proxy-server verandert kan worden gebruikt server-side aan het antwoord (dit handvat is veel makkelijker met REST API's dan met SOAP). Het instellen van de juiste headers voor cache leven (24 uur voor films, en 30 minuten voor verhuur status) zal de API om schouders het grootste deel van zijn werkzaamheden aan de proxy-server. PHP AcceleratorsEr zijn een paar PHP accelerators beschikbaar, kunnen een drastische invloed op de snelheid van uw scripts. Elke keer een PHP script wordt uitgevoerd, is het geparsed en gecompileerd in byte code door scripting engine PHP. Omdat in het algemeen heeft het script niet veranderd tussen executies, dit is een enorme verspilling van verwerkingstijd. PHP versnellers cache van de byte code versie van de scripts, en uitvoeren die kopie (zijnde bewust van eventuele wijzigingen in het oorspronkelijke script). Dit bespaart het ontleden en opstellen stappen elke keer dat het script wordt uitgevoerd, omdat uw API zal worden genoemd met grote frequentie, en veranderde zelden kan dit een aanzienlijke besparing. Het is belangrijk te beseffen hoe PHP versnellers werken om te voorkomen dat onnodige verwachtingen voor hun resultaten. Beschouw het parsen en compilatie tijd voor een script als vaste kosten - elke keer dat het script wordt benaderd, ongeacht de snelheid van andere middelen (databases, bijvoorbeeld) of hoeveel de verwerking van de afgewerkte script vereist, moeten deze kosten worden betaald. Caching de byte-code kopie van het script alleen bespaart dat kosten, het zal niet de snelheid van uw database query's of andere CPU-intensieve processen. Een van de meest voorkomende PHP versnellers is van Zend, plichtsgetrouw titel het Zend PHP [4 / 5] Accelerator. Ik vond het makkelijk te installeren en is relatief tevreden met de resultaten. Na een upgrade naar PHP5 kort na de release, was ik niet in staat om andere versnellers die sindsdien beschikbaar test. Een van de andere versnellers ik gelukt om te proberen sigfault'd de roeping Apache proces op een aantal van mijn scripts, dus zorg ervoor dat u test welk gas u uitgebreid voordat het op het productiesysteem. een artikel afkomstig van Emanuela Hedrick
|
|||||||||||
|