Sådan opbygger du lynhurtige applikationer
Udviklerens mål er at øge appens ydeevne og forbedre brugeroplevelsen. Ofte er tiden imod udviklerne med interessenter, der ånder dem i nakken, konkurrenter, der truer med at udvikle bedre apps, end de kan producere, og brugere, der antyder, at de vil skifte til konkurrenternes apps. Projektledelsesteams er derfor altid på udkig efter metoder, der kan hjælpe dem med at bygge apps hurtigt – lynhurtigt. Og ja, det er ikke nok bare at være hurtig. De skal koncentrere sig om at gøre disse apps modstandsdygtige, med lav latenstid, og give gode renderingstider.
Valg af den rigtige teknologiske stak
En teknisk stak er et sæt programmeringssprog, værktøjer, teknologier og softwareprodukter, som udviklere bruger til at skabe en funktionel webapp. Dette kan kategoriseres som server side (back end) stack, klient side (front end) stack og middle ware. På grund af det store antal gem-biblioteker er RoR det mest anvendte rammeværk til hurtig app-udvikling. Hvis du f.eks. lige er startet i din virksomhed, kan du vælge et sprog/ramme/CMS-værktøj, som giver dig mulighed for at sammensætte en prototype. Værktøjer med den korteste indlæring er bedst for dig.
Hold dig fra for tidlig optimering
Donald Knuth sagde engang: “For tidlig optimering er roden til alt ondt”.
Udviklerne bruger meget tid på at tænke på de ikke-kritiske dele af softwaren i stedet for at udvikle de kritiske dele af koden. De lægger ikke vægt på de kritiske dele af koden, og de arbejder heller ikke på den kode, der skal optimeres.
Uerfarenhed kan være årsag til det. For at forhindre, at lignende ting sker for dit team, skal du sørge for, at teamet skriver den første version af koden uden at bekymre sig om dens ydeevne. Senere kan teamet ved hjælp af en profiler kontrollere, hvor flaskehalsene befinder sig.
På denne måde kan de kontrollere de områder, der virkelig har brug for opmærksomhed, og ikke bekymre sig om det, der ikke har brug for opmærksomhed.
På PHP-området findes der nogle værktøjer, som du kan bruge til at profilere din kode. Det drejer sig om xdebug, xhprof, Symphony profiler, Tideways, Blackfire.io og The Stopwatch Component.
Gør kun det, du har brug for at gøre
Din kode gør ofte ting, som ligger uden for det, du forventede, at den skulle gøre. Især når det drejer sig om komplekse biblioteker og frameworks. Nogle gange kan du indlæse klasser, som du ikke havde planlagt at bruge, eller åbne en databaseforbindelse, som ikke var nødvendig for at generere resultater for en bestemt forespørgsel.
Du skal undgå, at det sker, fordi det kan stå i vejen for din præstation. Her er et par tips til, hvordan du kan opnå bedre resultater:
a) Autoloading
– Ved hjælp af funktionen Autoloading behøver du kun at bekymre dig om de filer, som du har brug for at inkludere i dit script. Det er sandt, at autoloading tidligere var en lidt kompliceret opgave, men ved hjælp af værktøjer som Composer og PSR-0- og PSR-4-standarderne er det blevet en leg at konfigurere autoloading.
b) Indsprøjtning af afhængighed
– Selv om det er et meget almindeligt designmønster i Java, har Dependency Injection også fået stor udbredelse i PHP-verdenen. Det skyldes, at rammer som Symphony, Laravel og Zend bruger det i vid udstrækning. Med Dependency Injection kan udviklere injicere komponenter via constrictor-metoden, og det gør det muligt for udvikleren at tænke i afhængigheder. Det hjælper dem med at skabe små isolerede komponenter, hvor der kun er fokus på én ting.
Kompression
Du kan reducere datastørrelsen ved at bruge de komprimeringsteknikker, der er tilgængelige for indholdet. REST-tjenester har mindre overhead, og sørg for, at billederne i dataene har den korrekte størrelse, da billeder, der er svære at indlæse, virkelig kan påvirke indlæsningen af apps. Sørg også for, at du har HTTP-komprimering slået til, når du bruger en webserver.
Brug caching-metoden til at udføre gentagne opgaver
Der er ingen tvivl om, at webapps er meget komplekse i dag, og de skal være kompetente nok til at generere svar på alle anmodninger, der kommer ind. En smart måde at udføre gentagne opgaver på er ved hjælp af caching. Det er en meget udbredt teknik, som kan findes overalt. I webprogrammering er der forskellige niveauer af caching, som du kan bruge, f.eks. Byte Code Cache, Application cache, HTTP cache og Proxy cache. På den måde kan man undgå for mange ture gennem indholdsinfrastruktur og mobilnetværk.
Netværk til levering af indhold (CDN)
Reducer netværkslatenstid, pre-fetching af indhold, optimering af netværksrouting m.m. via CDN’er eller Content Delivery Networks. Disse kan fremskynde din ansøgning betydeligt. Nogle af de mest populære CDN’er er Akamai, Edgecast, Limelight, Amazon CloudFront og endda telekommunikationsvirksomheder som AT&T og Level3.
Hvis backend’en er en ydelseshæmmer
Hvis du føler, at backend-serveren tager meget tid i brug, skal du konfigurere softwarestrukturen på en sådan måde, at portabilitet, forbrugsmuligheder, ændringsmuligheder og skalerbarhed ikke påvirker appens ydeevne. Du skal sandsynligvis foretage en arkitekturvurdering for at finde ud af, hvilken del af appen der er hurtigst muligt. Hvis du vælger en tredjepartstjeneste til dette, skal du sørge for at stille dem alle de rigtige spørgsmål, før du ansætter dem.
Træg indlæsning af aktiver
On-demand- eller lazy loading-aktiver kan forbedre din webapps ydeevne. Dette gælder dog primært for billederne. Lazy loading af billeder kan resultere i hurtigere indlæsning af din side,
reducere belastningen på serveren og reducere hukommelsesforbruget i browseren. Lazy loading kan udføres via relevante plugins eller udvidelser. Her er et plugin, der håndterer lazy loading af billeder til React – react-lazy-load.
Brug array-ids, når du bruger biblioteker til DOM-manipulation
Brug af array-ids vil være en stor hjælp til at forbedre ydeevnen på dynamiske websteder, hvis du bruger React, Angular, Ember eller et andet bibliotek til DOM-manipulation. Array-id’er giver DOM-manipulationsmotorer en indikation af, hvornår en bestemt node kan tilknyttes et bestemt element i arrayet. Uden denne funktion ødelægger biblioteker de eksisterende knuder og opretter nye knuder, hvilket forringer ydeevnen.
“Følg disse tips og fokuser på at skrive de rigtige koder til dit projekt, så kan du opnå en fantastisk ydeevne og skalerbarhed for din app”
- 6 tommelfingerregler til at bygge lynhurtige webserverapplikationer
- Opbygning af lynhurtige Android-apps
Flickr.com / Bjorn Gruenwald
Om forfatteren: Reema arbejder som Thought Leader hos PHPBabu.