TSM - Cum poți crește performanța în ASP.NET ?

Ioana Dogaru - External Communication Specialist @ ALTEN Romania & Kepler

.NET Framework îi ajută pe dezvoltatori să creeze aplicații scalabile utilizând limbajul de programare preferat. ASP.NET este un subsistem care rulează pe serverul WEB și care permite dezvoltatorului unui site WEB să folosească un limbaj de programare și o tehnologie la alegerea sa, independent de .Net Framework.

Performanța aplicației web ASP.NET este importantă. Timpul de încărcare, ergonomia și algoritmii intuitivi de utilizare sunt elemente esențiale ale unui site care poate atrage sau îndepărta utilizatorii.

Iată câteva moduri de optimizare a performanței aplicației ASP.NET în vederea atragerii unui număr mare de utilizatori:

Reducerea timpului de încărcare a paginii

Puteți reduce timpul de încărcare a paginilor Web, dacă diminuați dimensiunea scripturilor Javascript și a fișierelor CSS și dacă evitați imaginile excesiv de mari, etichetele redundante și tabelele HTML imbricate.

De asemenea, trebuie să evitați utilizarea controalelor de pe server (cu excepția cazului în care există un motiv special de a le utiliza) pentru a micșora dimensiunea paginilor Web.

Puteți utiliza proprietatea Page.IsPostback pentru a evita procesarea inutilă pe server pe o rută GET/POST, reducând astfel traficul de rețea.

Pentru a reduce timpul de încărcare a paginii, puteți precompila paginile Web din aplicația dumneavoastră.

De asemenea, puteți seta atributul AutoEventWireup la "false" în fișierul machine.config, astfel încât runtime-ul să nu fie obligat să caute fiecare procesor de evenimente (event handler) într-o pagină Web.

Când setați această proprietate la "false", evenimentele din pagină nu vor fi conectate automat la o funcție de procesare, eliminând astfel posibilitatea ca același eveniment să fie procesat de două ori, atunci când pagina este în execuție.

Ar trebui să cuplați scripturile și css-urile utilizate cât mai mult posibil.

Utilizați Caching

Cachingul este o tehnică excelentă pentru a îmbunătăți performanța aplicației. Dacă aplicația dumneavostră are modificări rare de date sau paginile WEB au conținut static, puteți utiliza cache-ul. Dacă aplicația nu procesează conținut în timp real, luați în considerare utilizarea cache-ului de ieșire. Dar datele nu vor fi cele mai recente pe durata menționată, permițând cache-ul.

Puteți utiliza cache-ul pe întreaga pagină sau fragmente de pagini sau de controale, în funcție de tipul de date statice pe care le aveți.

Administrare Stare

Ar trebui să evitați utilizarea ViewState pentru a facilita încărcarea mai rapidă a paginilor. Fiecare octet adăugat la o pagină web va permite utilizatorului să suporte doi octeți de trafic de rețea - un octet în fiecare direcție, adică de la server la client și celălalt de la client la server.

De asemenea, ar trebui să eliminați directiva "server" de pe pagina Web, dacă nu aveți nevoie să utilizați ViewState. Aceasta vă va salva în jur de 20 de octeți din dimensiunea paginii.

Server Web unic

Dacă doriți o performanță optimă a site-ului, utilizați o sesiune în proces atunci când aveți un singur server Web și când aveți un număr rezonabil și limitat de sesiuni concurente. Folosiți o sesiune într-un proces specializat, atunci când starea sesiunii trebuie să fie disponibilă pentru mai multe site-uri WEB (ferme WEB) și când aveți nevoie de persistența sesiunilor în cazul restartării procesului ASP.NET. Puneți în aplicare o sesiune de stare SQL Server atunci când preocuparea dvs. principală este fiabilitatea.

Activați compresia

Protocolul HTTP nu este un protocol deosebit de eficient și, în mod implicit, nu există o comprimare a conținutului. Unele resurse web sunt deja comprimate, în special imagini, dar HTML, CSS și JavaScript sunt de obicei transferate ca text. Chiar și cele mai vechi browsere acceptă compresia conținutului HTTP folosind algoritmul gzip.

Economiile de la utilizarea compresiei gzip pe un fișier HTML sunt în jur de două treimi; adică un fișier necomprimat de 100kb va ajunge la 33kb la trimitere.

Dacă doriți să încercați ceva nou, există un algoritm actualizat numit Brotli, care promite multe și este destul de bine susținut în browserele moderne.

Îndepărtați modulele neutilizate

Solicitările se prelucrează după ce au trecut prin diferitele module HTTP ale fluxului ASP.NET și, în cele din urmă, ajung la dispozitivul care răspunde cererii. Rulați un cod pentru a verifica lista modulelor active și a celor care nu sunt utilizate.

Scurtați călătoria solicitării prin pipeline, eliminând modulele neutilizate. În acest fel, adăugați o anumită eficiență și viteză aplicației voastre. Pentru a elimina un modul, trebuie să actualizați web.config .

Reduceți cererile HTTP

De fiecare dată când browserul trebuie să deschidă o conexiune la server, trebuie să plătească o taxă. Această taxă este sub formă de costuri de conectare TCP/IP. Această problemă este vizibilă în special în scenariile cu o latență ridicată, unde este nevoie de mult timp pentru a stabili aceste noi conexiuni.

Adăugați la aceasta faptul că browserele limitează numărul de solicitări pe care le va face către un singur server simultan, devenind evident că reducerea numărului de solicitări HTTP este o optimizare excelentă.

Încărcați mai întâi conținutul CSS

Încărcați mai întâi conținutul CSS al site-ului vostru, de preferință în secțiunea \ a paginii. Când descărcați o pagină, browserul va încerca să înceapă redarea aplicației, imediat ce are conținut. Adesea, ceea ce face este ceva de ghicit, deoarece browserul nu știe ce conținut de pe pagină poate invalida presupunerile pe care le-a făcut.

Când browserul își dă seama că a făcut o estimare incorectă despre modul în care ar trebui să fie redată pagina, atunci toată lucrarea care a fost făcută, trebuie să fie refăcută de la zero. Unul dintre lucrurile care provoacă una dintre aceste transformări este adăugarea unei noi foi de stil. Încărcați mai întâi foile de stil pentru a evita un stil care modifică un element deja redat.

Încărcați JavaScript la final

JavaScript ar trebui încărcat la final dacă vă doriți ca pagina să fie redată cât mai repede posibil. JavaScript nu este, de obicei, necesar pentru redarea inițială. În mod obișnuit, utilizatorilor le va lua o clipă pentru a citi pagina și pentru a decide ce să facă în continuare. Această fereastră este utilizată pentru a încărca scripturi în fundal și pentru a evidenția interacțiunea paginii.

Să adăugăm o restricție la această regulă: dacă site-ul vostru folosește intens JavaScript, cum ar fi o aplicație Angular sau React, atunci puteți constata că încărcarea JavaScript la finalul paginii este de fapt dăunătoare.

Încercați să încărcați JavaScript-ul necesar pentru bootstraparea aplicației și încărcarea mai multor imagini în fundal. Dacă viteza este cu adevărat importantă, puteți chiar să căutați aplicații isomorfe sau universale. Paginile din aceste aplicații sunt furnizate de server, iar apoi aplicația JavaScript se atașează la codul HTML deja redat.

Micșorați librăriile

Dacă utilizați librării precum jQuery, considerați că este posibil să nu folosiți toate funcțiile și să utilizați o librărie mai mică și mai concentrată. Zeptojs este o librărie care acceptă multe dintre caracteristicile jQuery, dar este mai mică.

Alte librării, cum ar fi jQuery UI, asigură construirea de pachete personalizate cu funcții eliminate. Dacă sunteți în Angular, atunci kitul de producție realizează o mișcare a arborelui pentru a elimina bucăți întregi ale librăriei care nu sunt utilizate pentru proiectul dumneavoastră. Acest lucru reduce sarcina utilă transmisă, păstrând totodată aceeași funcționalitate.

Faceți Minificare

În producție folosiți versiunile diminuate ale fișierelor Javascript și Css. Pentru librăriile gratuite Javascript și Css, acestea vor oferi o versiune minimă, doar min.js în loc de .js. Reduceți chiar și fișierele personalizate js și css înainte de a trece la producție pentru a reduce dimensiunea paginilor.