Magento site performansı ve cache yapılandırması

Magento altyapılı bir eticaret siteniz varsa sıklıkla hız problemleri yaşamış olabilirsiniz. Bu yazımızda eticaret sistemi sahiplerinin anlayacağı dilden cache altyapısını anlatacağım.

Bir eticaret sitesinde hız en önemli şeydir, evet doğru duydunuz, belkide güvenden daha önemlidir. Çünkü zor açılan eticaret siteniz çok güven versede hız açısından sınıfta kaldığı için müşteri gözünde daha en başta negatif biz izlenim oluşturur.
Özellikle bir çok ürünün satıldığı bir siteniz varsa, ürün aramak, karşılaştırmak, fiyata ya da markaya göre sıralamak gibi işlemler ziyaretçiye ızdırap verir bir haldeyse muhtemelen ürün satmanız imkansızdır.
O bakımdan site hızı çok önemlidir. Hız problemini aşmanın en kolay yolu binlerce dolar fazla vererek son derece gelişmiş bir sunucu yatırımıdır. Tabi başlangıç aşamasında kısıtlı bütçesi olanlar için böyle bir seçenek yoktur. O halde yazımızı sonuna kadar okuyun.

Web Sitesinde Performansı etkileyen Faktörler;
  • Donanım
  • Kod Optimizasyonu
  • Cache sistemi

1 - Donanım
Donanım baştada söylediğimiz gibi bütçe ile ilgilidir. Ancak cpu mu bellekmi disk hızımı ?
Bütçeniz kısıtlıysa başlangıç aşamasında bu 3 faktörle ilgili tavan değerlere sahip bir sunucu alamayabilirsiniz, bu durumda magento altyapısı için donanım seçerken hangisinin daha önemli olduğunu bilmenizde fayda var. Bunu hesaplamak için çok iyi bir fizibiliteye ihtiyacınız var, başlangıç aşamasında aynı anda kaç müşteriye hizmet verebilir olmalısınız ? 

bu sorunun cevabına göre donanım seçimi yapılabilir. Minimum olması gereken değerleri vererek bu bölümde daha fazla teknik detay vermiyorum. Magento için minimum donanım konfigürasyonu:
Xeon işlemcili bir altyapı, mümkünse en düşüğüde olsa bir ssd disk, 8gb bellek.

2 - Kod Optimizasyonu
Elbette magento kodu yazmanız gerekmiyor, ama magento teması seçerken titiz davranın, kötü hazırlanmış bir tema başınıza bela olabilir. Öncelikle tema alırken üreticisini araştırmanızda fayda var, ilk kez mi magento teması üretmiş, ürettiği temalar kaç kez alınmış, versiyon güncelleme sıklığı nedir, mümkünse üreticinin destek forum, blog, ticket vb. servislerini inceleyip kullanıcı deneyimlerini ölçümlemeye çalışın. Destek için size sadece bir email adresi veren bir satıcının ürününü kesinlikle almayın.
Kod optimizasyonu açısından ikinci önemli şeyde yüklenecek 3.parti yazılımlar, herhangi bir bileşen almadan öncede tema seçerken olduğu gibi titiz davranın, ücretsiz bileşenlere temkinli yaklaşın, gereksiz bileşen yüklemeyin.

3 - Cache sistemi
Cache (keş) sistemini şuna benzetebiliriz, diyelimki ziyaretçiye bir tablo sunmamız gerekiyor, tabloda kolonlarda markalar satırlarda ürünlerin özellikleri yer alacak, 10 kolon(marka) ve 100(satır) adet ürünün verilerinden oluşan bu tablonun oluşabilmesi için kayıtlı 100 ürünün veritabanından bilgileri okunacak ve tabloya dizilecektir. yani 10x100 =1000 adet verinin gelmesi için her ürünle ilgili bilgiler bulunup tabloya yerleştirilecek.
Bu işlem biraz zaman alacaktır, ziyaretçi için bu birkaç sayfalık basit bir sorgudur ve beklemek istemez, işte cache sistemide bunun içindir. zaten bu işlem bir kez önceden yapılmıştır ve sonuç hazırdır, tekrar işlem yapmadan bilgi ziyaretçiye sunulur. Böylece belki 10-12sn sürecek işlem 1-2 saniyede biter.

Ancak başarılı cache sistemlerinin arkasında bir çok algoritma vardır ve kusursuz çalışması gerekir.  
Örneğin; her ziyaretçi aynı markaların listelenmesini istemeyebilir, dolayısıyla her değişiklik sunulacak tablonun değiştirilmesi demektir. Bu da hafızada aynı tablonun yüzlerce türevenin de hafızada depolanması demektir.

Magento bunun için bir çok cache tipi kullanır bunlar;
veritabanı cache leri
php operasyonel kod cache leri
Magento nun kendi cache leri
Uygulama tarafındaki tam sayfa cache leri
ve sunucu tarafındaki tam sayfa cache leri

Veritabanı cache leri:
Bu cache tipi farklı veritabanı sorgularını saklar, böylece uygulamanın vertabanına başvurduğu durumlarda anında cevap vererek uygulamanın hızlı çalışmasını sağlar.

php operasyonel kod cache leri (opcode cache):
php betik dili için üretilmiş bir çok opcode cache vardır, bunlar APC, Xcache, Zend Opcache, and eAccelerator. Kullandığınız php versiyonuna göre bunlardan biri seçilebilir, APC yaygındır ama 3.1.13 öncesi sürümlerinde çok problem vardır.
buna dikkat etmeniz gerekir. php opcode cache kullanıldığında, dosya arama, okuma gibi php işlemlerinde performans artar.

Magento nun kendi cache leri:
bu cache tipide sayfa yapısı, html blokları, ayar değişiklikleri gibi değişikliklerde tekrarlanan işlemleri azaltır.

Uygulama tarafındaki tam sayfa cache leri:
Magento cache inden farkı html bloklarını değil tüm sayfa içeriğinin cache lenmesidir. Tam sayfa cache lemesi kullanıldığında web sayfasının yüklenme süreleri büyük ölçüde azalır. Ancak veritabanı sorgu süreleri ile sayfa yüklenme süreleri arasındaki farkada dikkat etmek gerekir, sayfa yüklenme sürelerini sayfada kullanılan java scriptleri, stil dosyaları ve görseller etkiler. Bu method özellikle html sayfalar için iyi sonuçlar verirken sepet, daha önce görülen ürünler vb. veritabanından sorgulanarak getirilen bilgilerin olduğu sayfalarda ise problem yaratabilir. Bu sorunu çözmek için ise dinamik bloklar ayrıca tasarlanır. 

Sunucu tarafındaki tam sayfa cache leri:
Bildiğiniz gibi sunucu taraflı cache sistemleri konusunda varnish çok popülerdir, ve varnish cache için magento tarafında birçok entegrasyon modülü oluşturulmuştur. Eğer sayfada dinamik blok yoksa sorgulama sonucunu tamamen varnish döndürür, magentoyu uğraştırmaz ancak bu sadece içerik sayfaları için mümkündür.eğer sepet safası gibi dinamik blok varsa varnish isteği magentoya yöneltir, ya da ajax metodu ile sonucu üretmeye çalışır.  sonuç olarak sunucu tarafındaki cache in başarısı entegrasyon modülüne bağlıdır.


Sonuç:
Eğer eticaret altyapınız magento ise hız konusuna önem vermelisiniz. Yavaş bir eticaret sistemiyle satış yapmanız mümkün olsa bile sizi fazla ilerletmez, öyle ya da böyle hıza ihtiyaç duyarsınız, Magento da hız konusunda çok fazla seçenek olsada bir çoğu sadece ücretsiz olduğu için popülerleşmiştir ve gerçek anlamda işinize yaramaz, eticaret sistemleri genelde başlangıç aşamasındayken gerçek bir ölçümleme verisine sahip değildir. yani sitenizin hızlı olup olmadığı, aynı anda kaç müşteriye hizmet verebileceğini yüklenme olmadan bilemezsiniz.  Önerimiz hız için paketleştirilmiş çözümlerdir. Yani ücretli ve sürekli desteği olan profesyonel çözümler sizi sonuca ulaştırabilir. Konuyla ilgili detaylı bilgi almak için bizimle irtibata geçebilirsiniz.