Sfaturi pentru optimizarea scripturilor php

Sfaturi pentru optimizarea scripturilor php

Unul dintre principalele criterii pentru succesul oricărei resurse Internet este viteza de funcționare a acestuia și, în fiecare an, utilizatorii devin din ce în ce mai exigenți în privința acestui criteriu. Optimizarea funcționării php-skip-urilor este una dintre metodele pentru a asigura viteza sistemului.







În acest articol, aș dori să prezint publicului colecția de sfaturi și fapte privind optimizarea scripturilor. Colecția a fost colectată de mine de mult timp, se bazează pe mai multe surse și experimente personale.

De ce o colecție de sfaturi și fapte, mai degrabă decât reguli rigide? Pentru că, așa cum am văzut, nu există "optimizare absolută corectă". Multe tehnici și reguli sunt contradictorii și este imposibil să le îndeplinim. Trebuie să alegeți un set de metode pe care este acceptabil să le utilizați fără a compromite securitatea și comoditatea. Am luat o poziție de recomandare și, prin urmare, am sfaturi și fapte pe care le puteți urma sau nu puteți.

Indiferent de confuzie, am împărțit toate sfaturile și faptele în 3 grupuri:
  • Optimizarea la nivelul logicii și organizării aplicației
  • Optimizarea codului
  • Inutilitate optimă

Grupurile sunt alocate în mod condiționat și unele elemente pot fi atribuite direct mai multor. Cifrele sunt pentru serverul mediu (LAMP). Articolul nu abordează aspecte legate de eficacitatea diferitelor tehnologii și cadre terțe, deoarece acesta este subiectul discuțiilor individuale.

Optimizarea la nivelul logicii și organizării aplicației

Multe dintre sfaturile și faptele legate de acest grup de optimizare sunt foarte semnificative și oferă un câștig foarte mare în timp.

  • Identificați constant codul dvs. pe server (xdebug) și pe client (firebug), care ar dezvălui blocajele codului
    Trebuie remarcat faptul că trebuie să prezinți atât serverul, cât și partea clientului, deoarece nu toate erorile de server pot fi găsite pe serverul propriu-zis.
  • Numărul utilizat în programul funcțiilor utilizatorului nu afectează viteza
    Acest lucru vă permite să utilizați un număr infinit de funcții definite de utilizator în program.
  • Utilizați în mod activ funcțiile personalizate
    Efectul pozitiv se realizează datorită faptului că în cadrul funcțiilor operației se efectuează numai cu variabilele locale. Efectul este mai mare decât costul apelării funcțiilor definite de utilizator.
  • Funcțiile "grele critic" ar trebui, de preferință, să fie implementate într-un limbaj de programare terț, sub forma unei extensii a PHP
    Acest lucru necesită abilități de programare într-un limbaj terță parte, ceea ce sporește foarte mult timpul de dezvoltare, dar în același timp vă permite să utilizați tehnici în afara capabilităților PHP.
  • Procesarea unui fișier html static este mai rapid decât un fișier php interpretat
    Diferența pe client poate fi de aproximativ 1 secundă, deci este logic să existe o separare clară între statică și pagini generate de PHP.
  • Dimensiunea fișierului care este procesat (plug-in) afectează viteza
    Aproximativ la fiecare 2 KB de procesare sunt cheltuite 0.001 secunde. Acest fapt ne împinge să minimalizăm codul de script când este portat pe serverul de producție.
  • Încercați să nu utilizați mereu requ_once sau include_once
    Aceste funcții ar trebui să fie folosite dacă puteți re-citi fișierul, în caz contrar este de dorit să utilizați cere și includeți.
  • Când divizați un algoritm, dacă există construcții care nu pot fi procesate și dimensiunea acestora este de aproximativ 4 KB sau mai mult, atunci este mai optimă conectarea acestora cu ajutorul includerii.
  • Este de dorit să se utilizeze verificarea datelor trimise clientului
    Acest lucru se datorează faptului că atunci când verificați datele de pe partea clientului, numărul cererilor cu date incorecte este redus drastic. Sistemele de validare a datelor pe client sunt construite în principal folosind JS și elementele de formă rigide (selectați).
  • Este de dorit să construiți construcții DOM mari pentru seturile de date pe client
    Aceasta este o metodă foarte eficientă de optimizare atunci când lucrați cu afișarea unei cantități mari de date. Esența sa se reduce la următoarele: o serie de date este pregătită pe server și transferată clientului, iar construcția construcțiilor DOM este furnizată funcțiilor JS. Ca urmare, sarcina este parțial redistribuită de la server la client.
  • Sistemele construite pe tehnologia AJAX sunt mult mai rapide decât sistemele care nu utilizează această tehnologie
    Acest lucru se datorează scăderii volumelor de producție și redistribuirii încărcăturii către client. În practică, viteza sistemelor cu AJAX este de 2-3 ori mai mare. Notă: AJAX, la rândul său, creează o serie de restricții privind utilizarea altor metode de optimizare, de exemplu, lucrul cu tamponul.
  • Când primiți o cerere ulterioară, întoarceți întotdeauna ceva, puteți chiar spațiu
    În caz contrar, clientului i se va trimite o pagină de eroare care cântărește mai multe kilobyte. Această eroare este foarte frecventă în sistemele care utilizează tehnologia AJAX.
  • Obținerea de date dintr-un fișier mai rapid decât dintr-o bază de date
    Acest lucru se datorează în mare parte costului conectării la baza de date. Spre surprinderea mea, un procentaj imens de programatori stochează manatic toate datele din baza de date, chiar și atunci când utilizarea fișierelor este mai rapidă și mai convenabilă. Notă: fișierele pot stoca date care nu sunt căutate, altfel utilizați o bază de date.
  • Nu vă conectați la baza de date fără a fi nevoie
    Din motive necunoscute pentru mine, mulți programatori se conectează la baza de date în timpul citirii setărilor, cu toate că nu mai pot trimite cereri către baza de date. Acesta este un obicei prost care costă în medie 0,002 secunde.
  • Utilizați o conexiune permanentă la baza de date cu un număr mic de clienți activi simultan
    Beneficiul în timp este cauzat de absența costurilor pentru conectarea la baza de date. Diferența de timp este de aproximativ 0,002 secunde. Notă: pentru un număr mare de utilizatori, conexiunile permanente nu sunt de dorit. Când lucrați cu conexiuni persistente, trebuie să existe un mecanism de completare a conexiunilor.
  • Utilizarea interogărilor complexe de baze de date este mai rapidă decât utilizarea câtorva simple
    Diferența de timp depinde de mulți factori (volumul de date, configurația bazei de date etc.) și se măsoară cu o mie de ani, uneori chiar și sute, secunde.
  • Utilizarea calculelor pe partea DBMS este mai rapidă decât calculele din partea PHP pentru datele stocate în baza de date
    Acest lucru se datorează faptului că pentru astfel de calcule pe partea PHP sunt necesare două cereri de bază de date (recuperarea și modificarea datelor). Diferența de timp depinde de mai mulți factori (volumul de date, configurarea bazei de date etc.) și se măsoară cu mii și sute de secundă.
  • Dacă datele esențiale din baza de date sunt rar schimbate și mulți utilizatori accesează aceste date, este logic să salvați datele de probă într-un fișier
    De exemplu, puteți utiliza următoarea abordare simplă: extrageți mostre de date din baza de date și salvați-o ca o matrice serializată într-un fișier, apoi orice utilizator utilizează datele din fișier. În practică, această metodă de optimizare poate da o creștere mai mare a vitezei executării scenariului. Notă: Când utilizați această metodă, trebuie să scrieți instrumente pentru a genera și a modifica datele stocate în fișier.
  • Datele cache care se schimbă rar cu memcached
    Câștigul de timp poate fi foarte semnificativ. Notă: cache-ul este eficient pentru datele statice, iar pentru datele dinamice efectul este redus și poate fi negativ.
  • Lucrul fără obiecte (fără OOP) este mai rapid decât să lucrezi cu obiecte, cam de trei ori
    Memoria este, de asemenea, "mâncat" mai mult. Din păcate, interpretul PHP nu poate lucra cu OOP la fel de repede ca și cu funcțiile obișnuite.
  • Cu cât sunt mai mari dimensiunile matriceelor, cu atât funcționează mai lent
    Pierderea timpului provine din prelucrarea structurilor de cuibărit.






Aceste sfaturi și fapte dau o creștere nesemnificativă a vitezei în comparație cu grupul anterior, dar în totalitate aceste tehnici pot da un câștig de timp bun.

Un număr de metode de optimizare în practică nu au o mare influență asupra vitezei de execuție a scripturilor (câștigul de timp este mai mic de 0,000001 secunde). În ciuda acestui fapt, o astfel de optimizare devine adesea o chestiune de controversă. Am citat aceste fapte "inutile", astfel încât să nu le acorzi o atenție specială în scrierea codului ulterior.

În cele din urmă, vreau să reamintesc încă o dată că sfaturile și faptele pe care le citez nu sunt absolute, iar semnificația aplicării lor depinde de situația concretă. Trebuie reținut faptul că optimizarea scripturilor este doar o mică parte a întregii proceduri de optimizare și este adesea posibil să trăiți în liniște fără sfaturile de mai sus.







Articole similare

Trimiteți-le prietenilor: