| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
ExcalIbvr
Data înscrierii: 02/Mai/2004
Mesaje: 1107
Locație: Oradea
|
| Trimis: Mie Feb 07, 2007 10:59 am Titlul subiectului: --(page load time) |
|
|
Sunt in cautarea de solutii pentru optimizarea timpului de incarcare a paginilor dintr-un portal. Server-ul e Apache 2 (printre ultimele versiuni), cu PHP 5.1.6 si MySQL 5.
E si baza de date mare si avem in plan mutarea serverului de MySQL pe un alt server.
Ce solutii ati folosit si care au fost rezultatele? |
|
| Sus |
|
flavius.stef
Data înscrierii: 31/Iul/2006
Mesaje: 175
Locație: Timisoara
|
| Trimis: Mie Feb 07, 2007 2:00 pm Titlul subiectului: |
|
|
de obicei bottleneck`ul e baza de date, asa ca o (re)indexare a tabelelor (+ eventual o restructurare a acestora) ar fi primul pas.
al doilea - instalare de profiler, verificare unde in cod se "sta" cel mai mult si refactoring in concordanta (iti recomand cartea de refactoring a lui Martin Fowler)
Variante:
+ http://php.net/apc
+ http://www.zend.com/products/zend_optimizer
+ daca sunt pagini mari, poti folosi compresie pentru output, majoritatea browserelor moderne o suporta
+ scaderea rezolutiei imaginilor e un plus evident (daca nu sufera prea mult calitatea acestora)
+ folosirea de HTML semantic (layout CSS, nu tabelar) scade enorm cantitatea de continut servit de catre web server |
|
| Sus |
|
black diamond
Data înscrierii: 23/Mai/2005
Mesaje: 298
|
| Trimis: Mie Feb 07, 2007 3:09 pm Titlul subiectului: |
|
|
+ mutarea imaginilor pe alt server, eventual lighthttpd
+ caching la query-uri sau la (portiuni de) html
+ dezactivare conectare ssl la baza de date, daca este activata |
|
| Sus |
|
ExcalIbvr
Data înscrierii: 02/Mai/2004
Mesaje: 1107
Locație: Oradea
|
| Trimis: Mie Feb 07, 2007 9:49 pm Titlul subiectului: |
|
|
Ca alternativa la APC (nu ca as respinge optiunea asta), mi se pare interesant Squid. Mult de citit, insa :p.
Nu am simtit imbunatatiri prea mari cu Zend Optimizer.
Ma gandeam la compresia gzip. Recomandati?
HTML-ul este semantic, CSS power...
Am, insa, multe script-uri .js externe pe care le incarc. Le voi combina (fisierele), sa mai salvez niste request-uri, dar nu cred sa aiba prea mare efect.
Am mai citit undeva despre ideea de a avea imaginile pe alt server. Momentan, iese din discutie.
Folosim Creole, cu multe prepared statements. :)
In concluzie, cred ca voi incerca mod_gzip. |
|
| Sus |
|
black diamond
Data înscrierii: 23/Mai/2005
Mesaje: 298
|
| Trimis: Mie Feb 07, 2007 11:56 pm Titlul subiectului: |
|
|
1. Ai folosit FireBug pentru a vedea viteza si ordinea relativa de incarcare a elementelor?
2. Care e cel mai "incet" element? Daca ai selecturi "uriase" din baza de date care nu se modifica foarte des si ar merge sa faci update la cateva minute ai putea genera html-ul sau un array intr-un .php cu ajutorul crontab-ului si apoi doar il afisezi.
3. Folosirea ajax-ului pentru a adauga elemente in pagina |
|
| Sus |
|
whooper
Data înscrierii: 05/Apr/2005
Mesaje: 713
Locație: Toronto ON
|
| Trimis: Joi Feb 08, 2007 12:02 am Titlul subiectului: |
|
|
Inainte sa enablezi gzip-ul urmareste o vreme incarcarea pe procesor la PC-ul cu Apache. Daca sta peste 30% in mod curent, va ajunge la aproape 50% dupa enablarea gzip-ului. Doar daca n-ai probleme cu incarcarea e ok sa enablezi gzip-ul.
Un mic fine-tunning la MySQL si Apache nu strica.
1. Functie de cata memorie are serverul, lasa cat de multa poti la fiecare.
2. Functie de cate conexiuni concomitente ai acolo in mod uzual, ofera destule resurse pentru preforking ..
(mutarea imaginilor pe alt server se face tocmai sa minimizezi numarul de conexiuni concomitente la un Apache. Mai multe = mai bine + combinat cu un cache .. e ideal).
Daca ai imagini putine si destula memorie, pune-le pe un RAMDISK o singura data .. la Boot-Up. 20Mb in imagini intr-un RAMDISK nu mananca multa memorie, dar salveaza o tona de timp in acces concurent la HDD-uri. |
|
| Sus |
|
carco
Data înscrierii: 27/Mai/2004
Mesaje: 2796
Locație: Bucuresti
|
| Trimis: Joi Feb 08, 2007 8:19 am Titlul subiectului: |
|
|
Pana la urma (ca m-ai pierdut pe drum) ce anume merge greu?
Este server-ul prea incarcat si nu face fata la request-uri (care-i veriga slaba, hdd-ul, eth-ul, mysql-ul, ...?) sau clientului i se incarca greu paginile (multe img,js, ... )?
Daca server-ul e cu problema atunci, dupa cum bine zice whooper, cu gzip nu faci decat sa-l sufoci. O varianta ar fi sa ai cat mai multe elemente statice adica sa mutati administrarea pe o alta masina si in site-ul final, atat cat se poate, sa aveti html-uri chioare.
Daca pe partea client sunt probleme... atunci gzip ar putea fi o solutie. Pe langa asta, ar trebui minimizate:
- nr. de request-uri catre server (asta ajuta si server-ul)
- dimensiunea fisierelor transferate (optimizare img-uri, comprimare js-uri, ...)
...
Referitor la squid, te referi la "reverse proxy"? http://www.visolve.com/squid/whitepapers/reverseproxy.php |
|
| Sus |
|
ExcalIbvr
Data înscrierii: 02/Mai/2004
Mesaje: 1107
Locație: Oradea
|
| Trimis: Joi Feb 08, 2007 10:43 am Titlul subiectului: |
|
|
Stiu sigur ca nu MySQL este problema. Am foarte putine interogari in pagina respectiva.
Problema ar putea fi de la imagini (destul de multe) si multele .js-uri incluse (vreo 16 :))). Lucram sa reducem acest numar macar la jumatate. Mai bine un .js de 10 kb decat 2 .js-uri de cate 5 kb?
Blank screen la inceput, timp de cateva secunde, dupa care apare totul. Sa pun un "Loading... Please wait." nu e o solutie.
Continutul paginii e foarte simplu, am doar un formular generat cu QuickForm.
Serverul este un o masina colocata, cu CPU la 3.2 GHz si 2 GB RAM (cu Fedora), iar pe el ruleaza doar acest site. Latimea de banda nu este o problema.
Incerc sa vad ce zice Firebug. Nu l-am folosit pana acum decat pentru JS debugging.
Multumesc de idei! |
|
| Sus |
|
carco
Data înscrierii: 27/Mai/2004
Mesaje: 2796
Locație: Bucuresti
|
| Trimis: Joi Feb 08, 2007 11:10 am Titlul subiectului: |
|
|
Eventual vezi si http://www.websiteoptimization.com/ (iti spune ce "cantitati" ai pe site).
Chestia cu "blankscreen si dupa apare totul" e ciudata, daca e accesibil (si nu e secret) poti sa ne divulgi url-ul? |
|
| Sus |
|
ExcalIbvr
Data înscrierii: 02/Mai/2004
Mesaje: 1107
Locație: Oradea
|
| Trimis: Joi Feb 08, 2007 11:16 am Titlul subiectului: |
|
|
Am fost pe websiteoptimization.com si m-a intristat :D.
URL. Am dat acum o validare XHTML si m-am crucit. Oh well, viata-i dura. Avem multe componente facute de altcineva, pe care trebuie sa le folosim. Deci nu asta e subiectul :). |
|
| Sus |
|
carco
Data înscrierii: 27/Mai/2004
Mesaje: 2796
Locație: Bucuresti
|
| Trimis: Joi Feb 08, 2007 12:02 pm Titlul subiectului: |
|
|
Mda... urata treaba,
JS, 22 requests, 396 KB, 10.56s !!!
si cum sunt in HEAD... se cam explica situatia. |
|
| Sus |
|
ExcalIbvr
Data înscrierii: 02/Mai/2004
Mesaje: 1107
Locație: Oradea
|
| Trimis: Joi Feb 08, 2007 12:06 pm Titlul subiectului: |
|
|
| Incerc sa vad ce pot pune chiar la sfarsit. |
|
| Sus |
|
carco
Data înscrierii: 27/Mai/2004
Mesaje: 2796
Locație: Bucuresti
|
| Trimis: Joi Feb 08, 2007 12:32 pm Titlul subiectului: |
|
|
Am vazut ca fol. prototype/scriptcaulous, de ce nu pui versiunile comprimate?
Prototype.js are "doar" 60KB, comprimat ar tb. sa aiba 20-25, cu gzip... 10-15, eventual poti pune un js comprimat ce sa contina prototype+scriptaculous (ca sa nu zic sa pui jquery :) )
Tot mare este si calendar.js, il poti comprima si pe acela, ar tb. sa se simta ceva, ceva. De ex., folosind packerul lui Dean Edwards, rezulta:
Cod:
-rw-r--r-- 1 carco carco 49K 2007-02-08 12:35 calendar.js
-rw-r--r-- 1 carco carco 21K 2007-02-08 12:36 calendar-packed.js
|
|
| Sus |
|
ExcalIbvr
Data înscrierii: 02/Mai/2004
Mesaje: 1107
Locație: Oradea
|
| Trimis: Joi Feb 08, 2007 12:40 pm Titlul subiectului: |
|
|
| Hehe, ai dreptate! ;) |
|
| Sus |
|
carco
Data înscrierii: 27/Mai/2004
Mesaje: 2796
Locație: Bucuresti
|
| Trimis: Joi Feb 08, 2007 12:44 pm Titlul subiectului: |
|
|
and more,
http://www.studentplaneten.no/community/css/default.css
asta nu exista (costa vreo doua request-uri pt. ca se face un redirect catre page-unavailable) |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |