Przyspieszanie Magento z APC

W internecie często pojawiają się opinię iż Magento jest powolne i mało wydajne. Jednak warto zwrócić uwagę iż wydajność często jest pojęciem względnym. Magento jest ogromną platformą, a co za tym idzie wymagającą. Lecz posiada również wiele mechanizmów optymalizacyjnych. Ten artykuł będzie się koncentrował na jednym z takich aspektów, jakim jest współpraca magento z APC.

W przypadku instalacji APC wymagane będzie posiadanie pełnej kontroli nad serwerem i możliwości dokonania zmian w konfiguracji Apache i PHP. Czasami na hostingu współdzielonym, może uda nam się doprosić admina do dokonania niezbędnych poprawek. Ale wychodzimy z założenia iż Magento powinno być używane co najmniej na platformie VPS.

APC – Alternative PHP Cache

Korzystanie z APC jest naprawdę proste. Wystarczy zainstalować moduł do PHP i ponownie uruchomić serwer Apacha. Witryn automatycznie zaczną używać systemu cachowania APC.

Aby zainstalować APC na Debianie i dystrybucjach Linuksa opartych o niego, uruchom:

sudo apt-get install php5-apc

Pamiętaj, że musisz mieć uprawnienia root lub sudo do wykonania instalacji.

Potem już tylko restart serwera Apache w debianie :

/etc/init.d/apache restart .

Od tego momentu APC będzie dbało aby nasze skrypty były przechowywane w pamięci podręcznej i nie musiały być przy każdym wywołaniu interpretowane. Już na tym etapie wzrost wydajności naszego Magento powinien być satysfakcjonujący. Lecz to jeszcze nie wszystko co możemy zrobić. Magento tworzy swoją własną pamięć podręczną, domyślnie przechowuje ja na dysku w var/cache, możemy poinformować Magento aby w tym celu również wykorzystywało APC.

Aby to osiągnąć w pliku
app/etc/local.xml musimy stwożyć sekcję :


...
    
        apc
        MAGE_
    
...

gdzie :
backend to nazwa systemu jaki wykorzystujemy do trzymania danych przez Magento. Oprócz APC może to być jeszcze

  • memcached
  • xcache

prefix to nazwa identyfikująca nasz sklep, ma ona szczególne znaczenie jeżeli na jednym serwerze mamy więcej systemów korzysta z APC. Koniecznie wtedy musimy zadbać aby prefix był unikalny dla każdego systemu. W przeciwnym razie wspólne zmienne będą nadpisywane przez każdy z systemów. Co może doprowadzić do błędów lub wyświetlania nieprawidłowych danych w sklepie.

Ostatnim krokiem jaki warto wykonać to zmienić konfigurację naszego systemu APC. Jako iż domyślna konfiguracja APC jest dosyć oszczędna jeżeli chodzi o wykorzystanie pamięci. Poniżej przedstawiamy zalecaną przez nas konfigurację systemu APC dla jednego sklepu Magento.

extension = apc.so    #name dependent on your APC cache install

[APC]
apc.enabled = 1    # Turn APC cache on
apc.optimization  = 0    # Experimental keep off
apc.shm_segments = 1    # Shared memory segments
apc.shm_size = 128  # Max shared memory dependent on OS
apc.ttl = 7200
apc.user_ttl  = 7200
apc.num_files_hint = 1024
apc.mmap_file_mask = /tmp/apc.XXXXXX
apc.enable_cli = 1 # Allow command line php to function
apc.cache_by_default  = 1 # Enabled, 0 for filters
apc.max_file_size = 10M # Maximum cached file size
apc.stat = 1 # 1 for dev, 0 for production, whether the source file is checked for mod date
#apc.include_once_override = 1 # Use PHP5.3+ for include_once optimization

Koniecznie należy zwrócić uwagę czy nasz serwer posiada wystarczająca ilość zasobów. Jeżeli nie dysponujemy 128MB RAM dla APC należy zmniejszyć wartość zmiennej do pożądanej przez nas wartości.

Jeżeli potrzebujesz wydajnego hostingu dla magento lup pomocy w optymalizacji serwera pod magento skontaktuj się z Nami.

Konkurencja pomocna w pozycjonowaniu ?

Oczywiste jest że potrzebujemy ruchu na naszej stronie aby osiągnąć sukces. Brak ruchu oznacza :

  • brak klientów,
  • brak transakcji,
  • brak zysków.

Najlepszą formą pozyskania wartościowego ruchu dla witryny są wyszukiwarki internetowe. Niestety większość właścicieli sklepów internetowych nie docenia ruchu generowanego z wyników wyszukiwania, co często prowadzi do porażki całego przedsięwzięcia związanego z e-commerce.

Brak wysokiej pozycji w wyszukiwarkach skutkuje brakiem klientów na stronie a jeżeli nasz sklep nie ma klientów to nie ma i transakcji. Efektem czego jest nieopłacalność prowadzenia sklepu.

Wiadomo iż optymalizacja sklepu dla wyszukiwarek jest ważna, ale tym co decyduje o pozycji naszego sklepu w wyszukiwarkach są linki. Optymalizacja sklepu jest tylko wstępem do osiągnięcia wysokich pozycji w wynikach wyszukiwania. Jeżeli wybierzemy Magento jako nasz system e-commerce to większość pracy z tym związanej opiera się na prawidłowym uzupełnieniu wszystkich pól opisujących nasze kategorie i przedmioty. Dokładniejszy opis optymalizacji Magento zamieściliśmy pod wpisem Magento seo http://www.magento-specialists.pl/2010/05/16/magento-seo/

Zdobywanie linków do strony często jest czynnością czasochłonna i skomplikowaną. Wymaga wyszukiwania stron z wysoką pozycją i pagerank, o podobnej tematyce do naszego sklepu. W internecie można znaleźć dziesiątki poradników jak zdobyć wartościowe linki. Ale poradniki te tylko wymieniają nam miejsca jakimi możemy się posłużyć, takie jak :

  • artykuły
  • katalogi stron
  • wpisy na forach
  • wpisy na blogach
  • komentarze … itd

żaden poradnik nigdy nie da nam odpowiedzi które z forów będzie najlepszym miejscem na nasz link, albo wpis na jakim blogu najbardziej przyczyni się do poprawy naszej pozycji.

Czy więc pozostaje nam tylko umieszczanie linków w ciemno na wszystkich napotkanych po drodze stronach ?

Nie. Źródłem takiej wiedzy może być nasza konkurencja, jeżeli jakaś strona osiągnęła już pierwsze miejsce w google na frazie która nas interesuje to warto wzorować się na jej zapleczu.

No dobrze ale jak uzyskać taką wiedzę przecież nie zadzwonimy do nich z pytaniem jak się pozycjonują. Na szczęście można w bardzo prosty sposób dowiedzieć się, gdzie znajdują się linki do ich strony. Narzędziem które posłuży nam do takiej analizy będzie http://search.yahoo.com za pomocą prostego zapytania linkdomain:www.nasza-domena.pl poznamy linki prowadzące do strony naszego konkurenta skatalogowane przez yacho. Teraz tylko wystarczy nam zrobić listę tych miejsc i spróbować dodać tam też i nasze linki.

Dzięki takiemu zabiegowi zamiast dodawać na oślep linki i czekać na efekt, mamy już z góry wytypowaną pulę stron o możliwie wysokim znaczeniu. W końcu jeżeli za ich pomocą nasza konkurencja odniosła sukces to i nam pewnie się uda.

Hosting dla magento

Ostatnimi czasy, często dostajemy zapytania od naszych klientów, na temat jakie są wymagania dotyczące hostingu dla magento. Według strony producenta powinno to być :

  • Serwer apache w wersji co najmniej 1.3:
  • PHP w wersji co najmniej 5.2.13+
    • Z zainstalowanymi dodatkami:
      • PDO_MySQL
      • simplexml
      • mcrypt
      • hash
      • GD
      • DOM
      • iconv
      • curl
      • SOAP (if Webservices API is to be used)
    • Safe_mode off
    • Memory_limit nie mniej niż 256Mb (preferowane 512)
  • Serwer bazodanowy MySQL:
    • 4.1.20 lub wyższy
    • z obsługą mechanizmu składowania InnoD
  • Możliwość dodania zadań do crontab z PHP 5
  • możliwość używania .htaccess

No dobrzy tyle by było tej teorii, a jak wygląda nasze doświadczenie :

Zawsze odradzamy naszym klienta wszelkiej maści hostingi współdzielone i to niezależnie czy to jest jakaś mała firma hostingowa z serwerem za 50 zł rocznie, czy konto biznes na home za 600 zł rocznie. Żadne z tych rozwiązań nie nadaje się do profesjonalnego zastosowania magento. Podstawowymi problemami są zawsze limity nakładane na skrypty w platformach współdzielonych. I tak np dla home jest to :

  • wielkość postowanego pliku – 64 MB,
  • max_execution_time – domyślnie 30 sekund – maksymalny czas wykorzystania procesora,
  • maksymalny czas wykonania skryptu – 300 sekund,
  • maksymalna ilość przyznanej pamięci – 80MB,
  • maksymalna ilość jednocześnie otwartych plików przez pojedynczy proces – 32

W magento takie limity doprowadzą do błędu „cpu time limit exceeded” np przy wykonywaniu operacji indeksowania lub eksportu bazy. Co więcej z względu na maksymalny czas wykonywania skryptu nie uda nam się nawet wykonać kopi bazy danych za pomocą udostępnianego przez home phpMyAdmin. Na nasze zgłoszenie do help desku w tej sprawie otrzymaliśmy odpowiedź :

„phpMyAdmin działa również w oparciu o zasoby serwera, w zwiazku z tym nie jest on polecany do operacji na bazach danych o wiekszej pojemnosci.
W przypadku dużych baz danych do wykonywania na nich operacji sugerujemy wykorzystanie zewnętrznego klienta SQL (np. Navicat)”

Więc gdzie hostować Magento? Nasza odpowiedź na to pytanie, to zawsze : „Na serwerze dedykowanym”. Jeżeli koszta związane z takim serwerem przekraczają założenia projektu to powinniśmy się zainteresować firmami wyspecjalizowanymi z dostarczaniu hostingu dla magento lub VPS-ami. Jedną z takich firm jest www.centerkom.pl

Jak poprawić tłumaczenia w Magento

Często zachodzi potrzeba szybkiego poprawienia jakiegoś tłumaczenia w naszym sklepie Magento. Wielu osobą kojarzy się to od razu z koniecznością ręcznej edycji plików csv oraz tracenia czasu szukając odpowiedniego pliku a następnie pozycji. Na szczęście twórcy Magento pomyśleli i o tym trwożąc specjalne narzędzie ułatwiające wprowadzanie nowych tłumaczeń. Poniżej prezentujemy jak poprawić nasze tłumaczenia korzystając z tej funkcjonalności

Za samy początku naszej pracy powinniśmy wyłączyć cachowanie tłumaczeń, można tego dokonać klikając kolejno w panelu administracyjnym :

  1. wybieramy menu „System„,
  2. klikamy pozycję „Zarządzanie pamięcią podręczną„,
  3. w wierszy „Tłumaczenia” klikamy guzik wyłącz,

Teraz kiedy magento już nie wczytuje z pamięci podręcznej naszych tłumaczeń, możemy przystąpić do ich poprawy. W tym celu wykonujemy następujące kroki :

  1. klikamy menu „System„,
  2. wybieramy pozycje „Konfiguracja„,
  3. w grupie zakładek „Zaawansowane” wybieramy „Narzędzia programisty„,
  4. następnie w bloku „Tłumaczenie w locie” pole „Włączono dla frontend-u” ustawiamy na tak.

Dzięki temu ustawieniu na naszym frontendzie przy elementach, pojawi nam się mała ikona książki jak na obrazie poniżej.

Po jej kliknięciu uzyskamy mozliwość poprawy naszych tłumaczeń w prosty sposób.

Prosta aktualizacja cen

Jedną z podstawowych wad Magento jest bardzo czasochłonna aktualizacja ceny. Za każdym razem wymagana jest edycja produktu następnie przełączenie zakładki i zapisanie nowej ceny. W przypadku jak mamy do poprawienia kilka lub kilkanaście cen może to być bardzo uciążliwe i czasochłonne.

Poniżej prezentujemy rozwiązanie umożliwiające masową i szybka aktualizację. Dziki naszemu modułowi już na etapie list produktów kolumna zawierająca cenę umożliwi jej aktualizacją.

Poniżej prezentujemy screen z magento z zainstalowanym modułem.

Koszt tego modułu masowej aktualizacji cen w wersji oem to zaledwie 50 zł netto

W przypadku zakupu go razem z wsparciem technicznym i instalacją jest to koszt rzędu 300 zł netto

AKTUALIZACJA
Nowa wersja dostępna bezpłatnie
http://www.magento-specialists.pl/2012/10/08/prosta-aktualizacja-cen-2/