Oczywiście jest kilka kluczowych elementów na których należy się skupić, takich jak używane oprogramowanie OS - wysoce rekomendowane jest użycie Linuxa, natomiast nie zaleca się używania serwerów Windowsowych dla Magento, system będzie działał jednak będzie mniej wydajny, może powodować problemy z uprawnieniami plików czy działaniem niektórych części kodu. Ważne jet ograniczenie liczby serwisów do niezbędnego minimum na serwerze produkcyjnym, celem równoczesnego ograniczenia liczby działających procesów. Użycie XFS i ReiserFS, konfiguracja ustawień MaxClients - celem lepszej kontroli liczby podprocesów.

 

Nie jest rekomendowane użycie SymLinksIfOwnerMatc, lepiej jest używać Options +FollowSymLinks  +SymLinksIFOwnerMatch dla poszczególnych katalogów. Warto włączyć moduły Apache deflate and header, co można zrobić za pomocą poniższych komend:

sudo a2enmod deflate
sudo a2enmod header

 Moją ulubioną metodą jest jednak optymalizacja przy użyciu domyślnego pliku .htaccess dołączanego przez Magento. Za pomocą kilku linijek kodu możemy osiągnąć nieprawdopodobne wręcz efekty wydajnościowe.

Włączenie kompresji wyjściowej

Poniższa sekcja włącza moduł mod_deflate dla Apache, który kompresuje tekst, css i javascript zanim zostaną wysłane do przeglądarki. Efektem tej operacji jest mniejsze pobieranie. Celem włączenia wystarczy odkomentować odpowiednie linijki w pliku.

############################################
## enable apache served files compression
## http://developer.yahoo.com/performance/rules.html#gzip
    # Insert filter on all content
    SetOutputFilter DEFLATE
    # Insert filter on selected content types only
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
    # Netscape 4.x has some problems...
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    # Netscape 4.06-4.08 have some more problems
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    # MSIE masquerades as Netscape, but it is fine
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
    # Don't compress images
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
    # Make sure proxies don't deliver the wrong content
    Header append Vary User-Agent env=!dont-vary

 Włączenie wygasania nagłówków

Przeglądarki używają wygasania nagłówków celem określenia jak długo odpowiednie komponenty strony powinny być cachowane. Elementy statyczne jak np obrazy powinny mieć długie terminy wygasania, jednak terminy wygasania przydają się również w przypadku pozostałych komponentów strony. Celem włączenia tej funkcjonalności ponownie należy odkomentować odpowiednie linijki kodu w pliku htaccess.

############################################
## Add default Expires header
## http://developer.yahoo.com/performance/rules.html#expires
    ExpiresActive On
    ExpiresDefault "access plus 1 year"

 Wyłączenie ETags

Etags są sposobem dla przeglądarek na sprawdzenie komponentów cachowania całej witryny podczas kolejnych wizyt. Mogą jednak wpłynąć na znaczne spowolnienie strony jeżeli nie zostały zaimplementowane odpowiednio w klastrze. Najlepiej jest po prostu wyłączyć Etags celem uniknięcia spowalniania serwera. Można to zrobić w następujący sposób w pliku htaccess.

############################################
## If running in cluster environment, uncomment this
## http://developer.yahoo.com/performance/rules.html#etags
    FileETag none

Dodatkowo oprócz optymalizacji samego pliku htaccess warto również skorzystać z kompilowania plików css i javascript. Można to zrobić w panelu administracyjnym w:

System -> Konfiguracja -> Programista -> Ustawienia Javascript zmieniamy opcję Połącz pliki Javascript na tak,

System -> Konfiguracja -> Programista -> Ustawienia CSS zmieniamy opcję Połącz pliki CSS na tak.

Warto również pomyśleć o włączeniu płaskiego katalogu w panelu administracyjnym, który zoptymalizuje wykonywanie zapytań do bazy danych.

Oczywiście należy pamiętać że każdy sklep jest inny i czasami z różnych powodów nie wskazane jest użycie któregoś z wskazanych tu punktów, wszelkie takie sytuacje powinny zostać rozpoznane indywidualnie dla danego wdrożenia.