Aproape fiecare aplicație bo # X301, cea mai mare parte a timpului de lucru cu resurse externe. De exemplu, descărcarea de informații din dosar și trimite cereri către baza de date. In plus, componenta de inițializare necesară pentru funcționarea aplicației (biblioteci și cadre).
munca eficientă cu resurse poate crește viteza de aplicare. Lazy încărcare - simpla optimizare de management abordare.
Lazy loading
Lucrul cu orice resursă externă constă de obicei din două etape:- Conexiune. De exemplu, inițializarea unei conexiuni la setările aplicației MySQL fișier de lectură.
- Utilizați. De exemplu, extragerea datelor din MySQL sau folosind componenta conectată.
Compuși de inițializare leneș
Cele mai des utilizate în aplicații care lucrează cu baze de date (MySQL, Memcache, Redis etc.). De obicei, conexiunea la baza de date este inițializat undeva în începutul aplicării:
# Nu utilizați o interogare pentru a Memcache, deși conexiune stabilită pentru ao
Lazy loading, în acest caz implică instalarea conexiunii numai atunci când primul apel la resursa. De exemplu:
# Lazy încărcare pentru a se conecta la MySQL
Toate accesul la MySQL va trebui să treacă prin clasa mysql. In timp ce stabilirea unei conexiuni are loc după prima încercare de a trimite o cerere la baza de date. Același principiu se va lucra pentru orice resursă care necesită compuși de instalare, de exemplu Memcache:
Lazy loading # pentru a se conecta cu Memcache
componentă de conectare Lazy
O cerere este în mod tipic un buchet mare de fișiere, care conțin diverse componente (clase și funcții). Conectarea componentelor - această conexiune fișier. Pe fiecare pagină, în cel mai bun caz, un 20. 30% dintre toate componentele disponibile în cerere și conexiunea lor, de obicei, arată astfel:
# Nici unul dintre conexiunea nu are nevoie de un fișier de pe această pagină
Se înțelege că nu există nici un sens pentru a conecta toate fișierele dintr-o dată. În PHP, acest lucru oferă un mecanism de pornire. Acesta vă permite să efectuați o funcție specifică atunci când se referă la o clasă care nu există.
Acest lucru se va descărca fișierele numai atunci când acestea sunt necesare. Pentru a utiliza această metodă, este necesar să se organizeze toate componentele din clasele. Acesta este adesea convenabil de a folosi o clasă statică:
# Include fișiere cu mysql clasa de la prima referință la ea
În aplicațiile reale, fișierele de clasă sunt adesea situate în dosare diferite. Este convenabil de a folosi o hartă a tractului:
carte # Class este convenabil pentru a colecta în mod automat, de exemplu, folosind funcția glob () și fișierul cache în map.php
Desigur, în practică, sunt necesare pentru a descărca componentele care trebuie să fie conectat în orice moment. Ca urmare, cererea va fi structurat după cum urmează:
fișiere de date de conectare Lazy
În multe aplicații, există fișiere care stochează date pentru diferite scopuri. De exemplu:- Setările aplicației (conexiuni de baze de date setări, etc.)
- Traduceri preparate în diferite limbi
- Clasa Harta de pornire
Pentru astfel de cazuri, este, de asemenea, convenabil de a folosi de încărcare leneș. De exemplu, să presupunem că setările aplicației sunt stocate în tipul de fișier:
# Un fișier exemplu setările aplicației
Apoi, utilizați un înveliș care se va conecta acest fișier ori de câte ori aveți nevoie de:
# Setările aplicației Încărcați numai prima dată când sunt accesate
Același lucru poate fi făcut pentru pornirea sistemului de traducere:
Acest lucru poate reduce cantitatea necesară pentru a încărca date de mai multe ori pentru vizitator nou.
cadrul descarcarea
Și pentru a schimba apelul la HTML:
Cu toate acestea, necesitatea de a face o mulțime de fișiere individuale pot crea probleme. De exemplu, atunci când schimbă conexiunile, va trebui să le schimbe în diferite locuri. Acest lucru este incomod.
Pentru comoditate, puteți utiliza cache-ul APC (în general, puteți utiliza orice bază de date externă pentru acest lucru). Apoi, logica count va rămâne în cadrul. Dar suplimentăm instrucțiuni de descărcare de gestiune:
Am păstrat în setările APC pentru conectarea la MySQL, și o cerere care ar trebui efectuată fără cadru de încărcare.
Acum, înainte de inițializarea cadrul, putem adăuga procesul de descărcare:
# Dacă există date-cheie, vom efectua acțiunile necesare fără cadru de încărcare
Utilizați descărcarea cadrului ar trebui să fie, în cazurile în care există un număr mare de operații simple repetate.