Probabil, orice dezvoltator de web cel puțin uneori este nemulțumit de viteza cu care site-ul său se deschide. În cadrul găzduirii virtuale există câteva motive principale pentru încărcarea lentă a site-ului (pagina principală sau secțiuni separate). Unele dintre aceste motive vom lua în considerare în acest articol.
Transmisia de date pe o linie comutată
Dacă, atunci când transmiteți informații, modemul încearcă să găsească viteza optimă, atunci datele nu sunt transmise în acel moment și timpul de încărcare al paginii poate fi amânat până la câteva zeci de secunde.
Transferul de date prin linie închiriată
Se pare că în cazul conectării pe o linie dedicată acest tip de probleme cu viteza de descărcare ar trebui să dispară, dar se pare că există și unele nuanțe. Una dintre ele este lărgimea de bandă a canalului. conectarea rețelelor în care se află serverul și computerul, care a solicitat un document de la acesta.
De obicei, o astfel de problemă poate fi observată în cazul trecerii uneia dintre rețele la utilizarea unui canal de comunicație de rezervă, care, de regulă, are o lățime de bandă mai mică decât canalul principal. De asemenea, pot apărea întârzieri în transmiterea datelor în cazul funcționării instabile a canalelor descrise - de exemplu, datorită defecțiunilor software și hardware.
Vizualizarea traseului și timpul de întârziere a pachetelor în diferite părți ale calculatorului client la serverul în care se află site-ul, puteți utiliza traceroute de utilitate (în * nix-sisteme) sau Tracert (în Windows), care afișează o listă de gazde, prin care pachetele de computer local la site.
Rețineți, totuși, că funcționarea corespunzătoare a acestui instrument depinde de circuitele de rețea, astfel încât este înțelept să se consulte cu administratorul de sistem în cazul în care linia nu oferă o listă completă de gazde sau nu funcționează.
Transferul de date ADSL
Problema cu descărcarea legăturii de date poate apărea și pe o linie dedicată care operează cu tehnologia ADSL. Abreviere ADSL (Asymmetric Digital Subscriber Line) reprezintă „Asymmetric Digital Subscriber Line“, subliniind inițial inerente în tehnologia acestei rate de date diferență în direcțiile de trafic către abonat și de la abonat. De regulă, viteza de transmisie de la abonat este mai mică decât viteza pentru abonat. Nu este nimic rău în acest lucru, deoarece majoritatea utilizatorilor conectați prin ADSL, viteza este doar necesară pentru a descărca rapid date de pe computerul dvs. de pe Internet.
În acest caz, transmiterea informațiilor de serviciu (de exemplu, confirmarea recepției de date) de la abonat la sursă creează trafic, care reprezintă o mică parte a lărgimii de bandă totale a canalului, cea mai mare parte a traficului în acest caz revine abonatului. Dacă în timpul descărcării unui fișier sau a unei pagini informațiile necesare de la abonat nu mai ajung la sursă, acesta din urmă interzice, de regulă, să trimită date clientului de ceva timp. Acest lucru se poate întâmpla dacă canalul în direcția de la abonat la server este încărcat complet.
Pagini dinamice, scripturi
Acum, ia în considerare motivele pentru încărcarea lentă a site-ului, care sunt direct legate de partea de server.
Foarte des, viteza de descărcare lentă a site-ului se datorează executării lentă a scripturilor care formează conținutul dinamic al site-ului. De obicei, acest lucru se datorează restricțiilor privind utilizarea resurselor în cadrul planurilor tarifare furnizate. Cu alte cuvinte, utilizatorul găzduirii nu poate folosi toate resursele mașinii fizice pe care se află site-ul său. Un astfel de mecanism, implementat prin anumite mijloace, este utilizat de aproape toate companiile de găzduire pentru a preveni supraîncărcarea sau eșecul întregii mașini fizice datorită scrierilor incorecte scrise ale unui utilizator individual.
Cu alte cuvinte, fiecare proces de utilizator devine la dispoziție doar o parte din resursele mașinii fizice: o parte din RAM, o anumită cantitate de timp CPU etc.
Următorii factori pot influența viteza redusă de execuție a scripturilor:
Să presupunem că scriptul ar trebui să se conecteze la o gazdă externă și să obțină unele date pe http. Cu cât datele sunt mai lungi transferate de la sursa externă la scenariu, cu atât mai mult va fi executată.
Aproape orice limbaj de scripting (Perl, PHP) va funcționa aproape întotdeauna mult mai lent decât un program care este rasfatat și optimizat direct sub instrucțiunile procesorului pe care va fi executat.
În mod specific, în cazul colaborării cu PHP, problema este rezolvată în mare măsură prin utilizarea optimizatorilor PHP (de exemplu, Zend Optimizer sau Turck MMCache). Sarcina lor principală este de a optimiza și de a accelera executarea scripturilor PHP (compilarea script-ului în bytecode și cachearea rezultatelor pentru apelul ulterior al versiunii compilate).
Exemplu de utilizare a optimizatorului PHP Turquo MMCache
Să luăm în considerare un mod de diagnosticare cu ajutorul programului Turck MMCache.
Considerăm Turck MMCache doar ca un exemplu. Puteți afla dacă există optimizatori de PHP instalați pe gazda dvs., contactând serviciul de asistență tehnică al furnizorului de servicii de găzduire sau examinând ieșirea funcției phpinfo ().
Creați în spațiul www un fișier php cu următoarea linie:
Apelați acest script din browser, veți vedea tabelele care conțin informații despre lucrarea din Turck MMCache:
Al doilea tabel conține o listă a tuturor scripturilor executate, precum și parametrii, cum ar fi Dimensiunea fiecărui script și numărul de descărcări reușite (Hits) din memoria Turck MMCache. Dacă parametrul Hits este setat la 0, înseamnă că Turck MMCache nu a reușit să cacheze acest script.
Pentru a determina cantitatea de fișiere de încărcat pentru a rula un script, trebuie mai întâi să ștergeți Turck MMCache din scripturi deja stocate în memoria cache. Pentru a face acest lucru, faceți clic pe butonul Ștergeți și asigurați-vă că memoria cache este ștersă - în lista script-urilor ar trebui să existe un singur script creat de noi. După aceasta, trebuie să apelați un anumit script prin browser și după finalizarea lucrărilor să actualizați pagina cu tabelele Turck MMCache. Ca urmare a acestor acțiuni, veți obține o listă de fișiere care sunt numite atunci când această interogare este executată. Volumul total al acestor fișiere poate fi calculat prin adăugarea tuturor scripturilor afișate în câmpul Dimensiune.
Unde se utilizează optimizatorii PHP
Corporale PHP-optimizatori oferă câștiguri de performanță în forumuri (de exemplu, phpBB, vBulletin), CMS - sisteme de management al conținutului (de exemplu, Bitrix (Bitrix), PHP-Nuke, Mambo).
În principiu, aproape orice sistem mare scris în PHP va funcționa mai repede când se utilizează optimizatori PHP. Dar, totuși, merită să ne amintim că nu întotdeauna acele script-uri care funcționează corect fără optimizatori vor fi 100% compatibile cu module suplimentare pentru PHP. Când conectați un modul, încercați să vă asigurați că codul pe care îl scrieți este compatibil cu acesta.
Lucrul cu baza de date
Un alt loc "îngust" în activitatea site-ului este adesea utilizarea neoptimală a bazei de date.
De exemplu, un vizitator al site-ului dvs. accesează o pagină dinamică, pentru care scriptul care o generează execută una sau mai multe interogări SQL. Dacă dintr-un anumit motiv serverul SQL le va procesa pentru o perioadă lungă de timp sau dacă prea multe date sunt transferate în script ca rezultat al procesării cererii, pagina solicitată va fi generată prea mult.
Pe o hosting virtual, MySQL este cel mai adesea folosit ca bază de date. Și unul dintre cele mai frecvente motive pentru executarea lentă a interogărilor SQL este absența indexurilor din tabelele MySQL. Dacă baza de date conține tabele cu cantități mari de date, executarea interogărilor SELECT pe câmpurile unui astfel de tabel fără indexuri poate dura destul de mult timp, ceea ce va afecta în cele din urmă timpul de formare a paginii. De aceea se recomandă monitorizarea periodică și optimizarea acestor solicitări. Acest lucru se poate face folosind comanda MySQL SHOW FULL PROCESSLIST. care afișează un tabel al tuturor interogărilor care rulează în prezent. Coloana "Ora" indică durata executării fiecărei solicitări. Dacă timpul de executare a interogării este mai mare de o secundă, există o ocazie pentru a verifica numărul de rânduri căutate de această interogare în tabel. Pentru aceasta, folosiți comanda EXPLAIN. care va emite, de asemenea, un tabel cu rezultatele. Valoarea din coloana Rows arată câte rânduri din tabel sunt afișate la executarea acestei interogări. Dacă numărul de linii este mai mare de 1000, atunci ar trebui să încercați să creați indici pentru acele câmpuri care sunt eșantionate. De regulă, în majoritatea cazurilor, după construirea indexurilor, este posibil să se reducă numărul de rânduri scanate de zeci de ori, ceea ce afectează în mod pozitiv timpul de execuție al interogării.
Să luăm în considerare un exemplu concret:
Facem o interogare din tabelul "produse" cu condiția din câmpul "id", pentru care indexul nu este construit. Cererea este executată 0,60 secunde. și când este executat, MySQL "scanează" 175246 rânduri în tabel. Puteți construi un index pe câmpul "id" și puteți compara rezultatele. După construirea indexului pe câmpul "id", aceeași interogare este executată aproape instantaneu, deoarece MySQL de fapt "scanează" doar o singură linie.
Mai multe detalii despre optimizarea MySQL pot fi găsite pe site-ul dezvoltatorului.
Transferul fișierelor mari prin HTTP
Odnaya O altă problemă comună care duce la site-ul lent de încărcare, în legătură cu volumul informațiilor descărcate de pe site-ul, precum și frecvența cererilor pentru descărcarea fișierelor. Să presupunem că aveți un site există mai multe fișiere foarte mari (mai multe megaocteți). Vizitatorii site-ului pot descărca aceste fișiere, dar procesarea cererilor lor va lăsa un timp considerabil, datorită faptului că fișierele au un volum mare. În cazul în care apare o solicitare în mai multe, este probabil ca site-ul se va deschide cu întârzieri mari sau nu deschide deloc, deoarece serverul este ocupat doar serviciu acele cereri. Deseori, această problemă poate apărea din cauza utilizării de către vizitatorii programe speciale concepute pentru a descărca fișiere (Download Managers) - unele dintre aceste programe descărca fișiere mari în câteva fluxuri, ridicând numărul de procese de lucru pe un server virtual și multiplicat ajunge foarte rapid o limită.
În cazul în care într-adevăr trebuie să încărcați în mod constant fișiere mari pentru descărcare, atunci este mai bine să luați în considerare utilizarea altor transporturi pentru transferul de date. De exemplu, permiteți accesul la fișiere prin FTP, dacă o astfel de oportunitate vă poate oferi hosting (posibil sub forma unui serviciu suplimentar). Astfel, descărcați serverul web Apache și schimbați lucrul la procesarea cererilor de descărcare a fișierelor pe serverul FTP.