Optymalizacja Joomla – poprawa wydajności

Bardzo często poruszany temat – wydajność. Bogactwo opcji rzadko idzie w parze z wydajnością, dlatego po zbudowaniu swojej strony trzeba zoptymalizować ją. Wyobrażasz sobie Joomla na serwerze wirtualnym z prawie 30 tysiącami unikalnych użytkowników i 150 tyś. odsłon w ciągu doby? Powtarzam: na serwerze wirtualnym. Nie? Ja też… nie wyobrażałem sobie tego, ale to fakt. Zobaczyłem statystyki jednego z serwisów opartego na Joomla i te liczby zaintrygowały mnie do tego stopnia, że skontaktowałem się z administratorem tamtego serwisu. W odpowiedzi otrzymałem bardziej szczegółowe statystyki i kilka wskazówek, jak zoptymalizować Joomla pod kątem wydajności.Prawdę mówiąc pewnie sam bym na to wpadł, ale skoro dostałem przepis na optymalizację Joomla, to podzielę się nim z Wami. Oczywiście o 30 tyś. uyżytkowników zapomnijcie, bo (pomijając nakłady potrzebne, by wypromować stronę) nie opiszę tu wszystkiego, co można zrobić, a jedynie najbardziej przystępne i sprawdzone przeze mnie zabiegi :)

Joomla, to niesamowicie elastyczny CMS – nadaje się do wszystkiego. Tuż po instalacji dysponujemy potężnym narzędziem do stworzenia własnej strony. Nie spieszmy się. Powolutku i z rozmysłem stwórzmy naszą stronę, a kiedy już nabierze ostatecznego kształtu, możemy przejść do optymalizacji skryptu, dzięki czemu zmniejszymy jego “serwerożerność”.

Po pierwsze wyłączmy statystyki wewnętrzne serwisu. Gromadzenie statystyk generuje ogromną liczbę zapytań do bazy, a przyznać trzeba, że statystyki wewnętrzne w Joomla do dokładnych nie należą, szkodą więc marnować moc serwera. Wyłączyć trzeba zarówno gromadzenie wszystkich rodzajów statystyk: danych o systemach i przeglądarkach, krajach, o ilości odsłon, a także wpisywanych w systemową wyszukiwarkę fraz.

O ile o wyłączaniu statystyk mówi się często, o tyle mało kto dalej wzrokiem sięga, a przecież sposobów na oszczędzenie baz danych jest więcej :) Przy każdym przeładowaniu strony skrypt musi z bazy wyciągnąć informacje dotyczące nie tylko części prezentacyjnej (artykuły, komponenty) ale także i chyba przede wszystkim modułów. Można tego uniknąć, a potrzebna nam będzie do tego elementarna znajomość html i budowy szablonów Joomla.

Cała filozofia sprowadza się do umieszczenia na stałe w pliku index.php templatki kodu html naszych modułów. W tym celu musimy odnaleźć w pliku index.php pozycję modułów, które chcemy statycznie umieścić. Za przykład weźmy pozycję “left” w templatce rhuk_solarflare_ii:

optymalizacja joomla

Pozycja “left” jest zaznaczona, w tym miejscu wyświetlana jest lista modułów mających w ustawieniach “left”. Zaglądamy do źródła naszej strony – w przeglądarce Ctrl+U i odszukujemy zawartość div’ów pozycji “left”:

optymalizacja

Kopiujemy ze źródła kod html i wklejamy go w odpowiednim miejscu w index.php – tutaj właśnie jest nam potrzebna podstawowa znajomość html i budowy szablonów dla Joomla/Mambo, byśmy wiedzieli co dokładnie skopiować i gdzie dokładnie to wkleić, aby szablon strony nam sie nie “wysypał”.

W ten sposób możemy na stałe umieścić moduły, które nie zmieniają się, a więc menu, linki/buttony itp. Takie rzeczy jak ostatnie komentarze, nowości itp. musza zostać. W moim przypadku wygląda to tak: w index.php mojego szablonu nad mosLoadModules umieściłem Menu, Kategorie i Snikers’a, następnie wyświetlane są najnowsze komentarze, a pod nimi reszta statycznie umieszczony moduł “Polecam”. Dzięki temu kolejność modułów mam taką, jaką chciałem. Podobnie jest z reklamą AdSense nad topem strony i modułem znajdującym się pod artykułami.

Po tych zabiegach strona stała się bardzo przyjemna dla serwera, co potwierdził administrator – różnica w obciążeniu serwera jest bardzo duża i oczywiście na plus. Z resztą widać to nawet podczas otwierania strony, szczególnie na szybkich łączach: pobierane z “mielonej” bazy danych moduły lubiły spowalniać pobieranie strony, a statyczne moduły to po prostu kod html, z którym radzić sobie musi przeglądarka, a nie serwer.

Kolejny element poprawy wydajności dopiero rozpracowuję, bo nie mam co do niego dokładnych wytycznych, głowy nikomu nie będę zawracał, tylko sam do tego dojdę i opiszę :) Pierwsze próby już poczyniłem i wkrótce poproszę kogoś z obsługi technicznej o raport na temat obciążenia serwera. Jednak już dwa wyżej wymienione sposoby pozwalają na znaczne zminimalizowanie obciążenia serwera.

Spodziewam się głosów, że dobry CMS nie powinien wymagać optymalizacji. Być może. Jednak Joomla to tak specyficzna aplikacja, którą można w 100% dostosować do własnych potrzeb, a to wiąże się z wyrzeczeniami – nic za darmo. Jeśli jednak nasza strona nabierze ostatecznego kształtu, to bez obaw można zabrać się za poprawę wydajności stosując powyższe sposoby. Minusem niestety jest brak submenu i oznaczania aktywnej pozycji menu (obecnie oglądanej postrony serwisu). Zauważyć jednak trzeba, że najpopularniejsze serwisy unikają takich gadżetów, które, nie ma co ukrywać, wiążą się z dodatkowym maglem dla bazy danych, co najboleśniej odczuwane jest na serwerach wirtualnych.

Subskrybcja
Powiadom o
guest

25 komentarzy
Wbudowane komentarze zwrotne
Pokaż wszystkie komentarze
zajawkarz.info

Nie zapomnijmy też o akceleratorach dla przeglądarek dość przyśpieszające ładowanie stron

Pozdrawiam Ps. Szuman będiesz pisał ten poradnik o templatce?

szuman

Jeśli będę miał więcej czasu, to na pewno napiszę. Chcę rozwinąć ten temat, opisać wszystko możliwie jasno, a na takie coś potrzeba czasu :)

Również pozdrawiam

Halszczak

No wszystko niby pięknie, ale takie coś można zrobić dla strony o niewielkiej objętości i pojemności. W momencie kiedy w bazach jest kilka tysięcy rekordów, a strona jest zbudowana z dosyć sporej ilości działów, taka optymalizacja nie bardzo zdaje egzamin. Ale na to też jest rada. Po pierwsze to o czym pisałeś, czyli wywalamy wszelkiego typu graficzne bajerki, po drugie, tak rozmieszczamy moduły strony, aby nam się wszędzie wszystko nie ładowało. To akurat jest dosyć proste, każdy moduł ma w adminowym panelu “spis treści”, czyli odnośniki w menu, przy których dany moduł ma się wyświetlać. Troche pokombinowałem i ustawiłem wszystko… Czytaj więcej »

szuman

dlaczego? przecież im mniej danych wyciąganych z bazy tym lepiej, tak więc moduły statycznie umieszczone pozwalają zaoszczędzić kupę zapytań. Co do statystyk to podpisuję się rękami i nogami: jak najmniej! Na stronie nie chodzi o chwalenie się ilością zarejestrowanych użytkowników itp. ale o podawanie informacji, a wewnętrzne statystyki… to też zabawka dla tych, którzy nie mają co ze swoim serwerem zrobić ;-) Jeśli ktoś z różnych powodów nie chce żadnych stat.pl, stat4u, alienstats itp. to przecież w panelu serwera są szczegółowe staty. :)

Maciek

Dziwi mnie fakt że opsiny przeze mnie poniżej komponent nie jest wspomniany nawet słowem nigdzie na polskich stronach joomli :) więc trochę musze o nim napisać. Joomla potrafi być wydajnym CMSem pod względem ilości zapytań do bazy mysql. Administratorom serwisów cieszących się dużą liczbą odwiedzin nie trzeba będzie zachęcać do kupna komponentu ze strony http://www.joomlatwork.com/products/components/joomla_performance.html o nazwie Joomla performance booster!. Co on powoduje? Jest to system zaawansowanego cachowania (kompletnie inny niz ten wbudowany obecnie w joomli). “Dzieki temu komponentowi strona w joomli działa niemal jak statyczna strona html. Jeżeli dana strona jest w cache żadne zapytania SQL nie są wykonywane… Czytaj więcej »

szuman

to ciekawe, co napisałeś, bo jakoś nigdy nie przyglądałem się komercyjnym dodatkom do Joomla ;-) Dobrze wiedzieć, bo może się przydać :-) co prawda 39 Euro droga nie chodzi, ale lepiej wydać te pieniądze na taki komponent, niż pakować kasę w VPS-y, czy dedyki. Mowa o tych, którzy poważnie traktują swoją stronę, bo przeciętniak wybierze inny sposób

Eryk

Dodatek moze i 39EU – ale od czego są bracia rosjanie: http://www.maxima.name/news.php?aid=3114

Paweł

Pozwoliłem sobie zrobić odesłanie do Twojego bloga w kwestii optymalizacji Joomla! pisząc ćwiczenia do Joomla! – wyd. helion. Dziękuje ślicznie za ciekawy artykuł (wpis). Wesołych Świąt

Bigus

Powinienes tez dopisac cos o gziopwaniu stron, dzieki czemu oszczedzamy znacznie na transferze i szybkosci zaladowania strony.
:P

Maciek

“Gzipowanie” stron owszem przyspiesza Internaucie wczytanie strony i oszczędza transfer na serwerze, ale jednoczesnie zuzywa dużą część oliczeniową procka serwera przez co może go zabić na stronach z liczbą unikalnych odwiedzin rzędu kilkudziesięciu tysięcy dziennie. Dlatego na mojej stronie gzip jest wyłączone…

Brama

Proponuje zapoznać się z mosLoadComponents

Więcej o tym tutaj
http://help.mamboserver.com/index.php?option=com_content&task=view&id=33&Itemid=60

Za pomocą odpowiednich warunków php można zoptymalizować szablon do minimum, gdyż po co ma się ładować całość jak my potrzebujemy tylko ten dany kawałek np na stronie głównej.
Oczywiście jest jeszcze wiele sposobów optymalizacji ale to badziej wtajemniczeni wiedzą o co chodzi.

Obecnie sam staram się postawić “portalik”

Krzysiek

Widzę, że masz nowszą wersję AkoComment niż ja i nie wyświetla “naszych” znaków ??

U mnie na 1.4.3 z polską adaptacją jest wszystko OK

szuman

eh, nie nie, z kodowaniem wszystko OK. Te pytajniki pojawiły się po przenosinach na nowy serwer (kodowanie baz danych się gryzło).

$staszek

dla zainteresowanych test wydajnosci popularnych cmsow i skryptow for :-) z tego testu wynika ze Joomla jest wydajniejszym cmsem niz krewniak Mambo ;-) W tyle za Joomla pozostaje m.in WordPress ;-)

Link do testu: http://www.cms.rk.edu.pl/w/p/benchmark-cmsw-i-pod-obcieniem/

PS. Fajny artykulik o poprawie wydajnosci Joomla :-)

szuman

dzięki za link do tego testu! ogromnie zdziwił mnie wynik SMF, które w/g tego testu wcale nie jest lżejsze od phpBB by Przemo… Dotąd słyszałem, że SMF jest dużo lżejsze od Przema i dlatego z Przema zrezygnowałem właśnie na rzecz SMF… ale zonk

Riklaunim

Bo w teście nie użyto akceleratora/enkodera PHP i jak coś ma dużo include to też będzie wolne ;)

Morfeusz

a ja mam KrasnalServ i nie wiem gdzie mam tych plikow szukac :( gdzie to jest pomuzcie :(

szuman

@Morfeusz, zacznę od podstawowego pytania: po co chcesz optymalizować Joomla! na swoim komputerze? Optymalizacja jest wskazana przy dużym ruchu i obciążeniu się z nim związanym :)

kOnIe

Co prawda szukałem czegoś na temat optymalizacji bazy i czyszczenia jej, no ale ten artykulik też się przydał. :)

Paweł

Witam.

Chciałbym się dowiedzieć ile by kosztowało u was zoptymalizaowanie strony http://www.vikon.pl ??? Zwłaszcza chodzi mi o linki strony.

Joomla 1.5.10 + Virtuemart 1.1.3

Proszę o odpowiedź na maila

hit

jak usunąłem wszystkie spacje i enetry to strona dostała takiego kopa w w tyłek aż sie zdziwiłem ;)

spart

Witam, korzystając z okazji ja również chciałbym otrzymać informację ile musiałbym zapłacić szanownym kolegom za optymalizację mojej strony, http://www.sklep.spart.com.pl strasznie zamula. Joomla 1.5.12 + Virtuemart 1.1.0

Marcin Szumański

@[b]Spart[/b], w przypadku tego sklepu najsensowniejszym rozwiązaniem byłby zakup jakiegoś dobrego systemu keszowania. Tu kombinowanie w stylu tego, co opisałem w powyższym wpisie, będzie bardziej sztuką dla sztuki. I proponuję zaktualizować Joomla!, bo już od dawna obowiązuje wersja 1.5.22, a po drodze było dużo ważnych aktualizacji bezpieczeństwa ;)

majda

Witam serdecznie. Szukam osoby która pomoże mi z optymalizacją mojego serwisu http://www.iloveparty.pl Proszę kierować oferty na maila pozdrawiam i czekam na wieści

Krzychu

Witam,
chciałbym zoptymalizować moją stronę do maksa, odciążyć ją poprzez usunięcie powiedzmy fotogalerii, gier, zbędnych podstron typu kalendarium, ewentualnie podpowiedzi i sugestie z Waszej strony.
Jaki byłby tego koszt?
Odpowiedź proszę przesłać na e-maila