Per, 02/08/2018 - 22:09 By Umit
Drupal Performance

Sayfa yükleme hızı kullanıcı deneyimi ve kullanışlılığı için önemli bir faktördür. Web projelerinizi geliştirirken performansı korumak ve stabil tutmak ana kriter sayılabilicek düzeydedir.. Ayrıca site performansını artırabileceğiniz pek çok yol vardır.

Drupal 8'de, site performansını optimize etmek için belirli araçlar ve modüller bulunur.

Önbellekleme, web sitesinizi optimize etmek için popüler bir tekniktir. Web verilerini (HTML, CSS, Resim) erişilebilir bir yerde depolayan bir işlemdir. Örneğin, kullanıcı bir web sayfasını ilk kez talep ettiğinde okunabilir içeriği veya bilgiyi belleğine depolar ve kullanıcı aynı HTTP sayfasını tekrar talep ettiğinde depolanan verileri alır ve kullanıcılara gösterir. Web sayfasının hızlı bir şekilde yüklenmesini sağlar.

Temelde iki tür önbellekleme vardır: İstemci tarafında önbelleğe alma ve Sunucu tarafında önbelleğe alma. Bu iki önbellekleme yöntemi dışında, sayfalar veritabanında önbelleklenebilir, Drupal öncelikle kendi veritabanında bilgiyi önbelleğe alır.

Drupal 8'in çekirdek önbellekleme teknikleri

Internal Page Cache: Bu çekirdek modül anonim kullanıcılar içindir. Bir e-ticaret web siteniz varsa ve anonim bir kullanıcı için "Sepete ekle" işlevselliğiniz varsa, bu önbellekleme modülü kullanılarak yapılabilir. Bu işleve ihtiyacınız yoksa kapatın.

Internal Dynamic Page Cache: Bu modül dahili sayfa önbelleğine benzer ve ikisi arasındaki tek fark, hem anonim kullanıcı hem de oturum açmış kullanıcı için önbelleğe almasıdır.

Varsayılan olarak "Internal Dynamic Page Cache" ve "Internal Page Cache" in kurulu ve etkinleştirildiğinden emin olun. Bir örnek için aşağıdaki ekran görüntüsüne bakın.

Page cache maximum age: Bu ayar, ön belleğe alınmış bir sayfanın maksimum zaman sınırı içindir. Burada ayarladığımız zaman ne olursa olsun, sitemiz tarayıcılara önbellekte saklanan bilgileri/verileri saklayacaklarını söyleyen azami zamandır. Varsayılan olarak, dahili dinamik sayfa önbellek "No caching" dir, ancak gereksinim uyarınca değiştirilebilir.

CSS ve JavaScript dosyalarını toplamayı seçtiğinizde, "Bant Genişliği İyileştirmesi", sayfanın yüklenmesi için gereken HTTP isteklerinin sayısını azaltmak için paketleri gruplar.

Drupal harici önbellekleme tekniği:

Drupal'da, harici bir önbellekle CMS etkileşimini denetleyen birkaç teknik var. Aşağıdaki gibi katkıda bulunan modülleri kullanarak yapılabilirsiniz.

  • CSS/JS Aggregation: Drupal kendi toplama yeteneklerine sahiptir; ancak Advanced CSS/JS Aggregation modulu dosya gruplama, önbelleğe alma ve sıkıştırma için daha etkili yaklaşımlar sunarak bunları büyük ölçüde geliştirir.
  • Varnish cache: Varnish, web sunucusundaki yükü azaltırken bir web sitesini hızlandıran bir programdır. Site performansını çeşitli modülleri kullanarak hızlandırabilirsiniz. örn: Varnish purge ve  Advanced Varnish Cache
  • Memcache: Memcache, standart önbelleği veritabanından çıkarıp Drupal uygulama performansını geliştirir. Drupal 8'de iki tür Memcached modülü vardır: Memcache ve Memcache Storage Nasıl yapılacağına blog yazımıza bir göz atarak ögrenebilirsiniz Drupal8'de Veritabanı Yükünü Azaltmak için Memcached Yapılandırma.
  • Redis: Redis, yüksek performanslı depolama ve erişim için optimize edilmiş bir önbellek tekniğidir. Bellek içi veri kümesiyle çalışır. Ayrıntılı bir açıklama için Redis modülüne göz atın.

MySQL yerine MariaDB'yi kullanın

MariaDB, verileri çeşitli web uygulamalarında yapılandırılmış bilgilere dönüştürürebilinir. MariaDB'nin, daha iyi depolama motoru ve performans özellikler açısından çeşitli avantajları vardır. Buna ek olarak, büyük kuruluşlar ve kurumsal kullanıcılar için büyük verileri işleyen TokuDB'yi de destekliyor

MySQL'in veritabanı motorları olan MyISAM ve InnoDB'in MariaDB'de sırasıyla Aria ve XtraDB tarafından değiştirildiğini unutmayın. Aria, disk yoğun operasyonlar söz konusu olduğunda fark yaratan daha iyi önbellekleme imkanı sunar. Geçici tablolar, karmaşık sorguları hızlandırmak için Aria'yı da kullanır. Percona'nın XtraDB, özellikle yüksek yüklü ortamlarda yavaş performans ve istikrar ile tüm InnoDB sorunlarından kurtarabilir.

Apache yerine Nginx kullanın

Apache ve Nginx en yaygın kullanılan iki açık web sunucusudur, ancak Nginx daha hızlıdır ve Apache'den daha az bellek tüketir. Nginx, Apache web servisine göre daha iyi performans gösterir. Aynı zamanda çok az sayıda eşzamanlı kullanıcıyı asgari kaynaklar kullanır.

Diğer özel araçlar ve modüller

  • Gereksiz tüm modülleri web uygulamanızdan devre dışı bırakın.
  • Bir güncelleme varsa, kullandığınız modülleri ve çekirdeği mutlaka güncelleyin.
  • Devel: Sorunları izlemeye yardımcı olduğu için sorgu analizi için Devel modülünü kullanın.
  • CDN (içerik dağıtım ağı): Sitenizde gösterilecek çok miktarda içerik varsa, bir CDN kullanmayı düşünün. Çoğu CDN, görüntü, video, ses klipleri, CSS dosyaları ve JavaScript gibi statik kaynakları barındırmak için kullanılır. Bir CDN sunucusu bir site ziyaretçisine ne kadar yakınsa, içerik o kadar çabuk bilgisayarlarına veya mobil cihazlarına gönderilir. Örneğin: AWS CloudFront, Akamai. Drupal siteleri için kolay İçerik Dağıtım Ağı entegrasyonu sağlar.
  • Image Lazyloader ve Blazy: Bu iki modül yalnızca tarayıcı penceresinde görünen resimleri yükler.
  • CSS sprite: Küçük resimler için CSS sprite'ı kullanın birine birleştirin.
  • gzip sıkıştırma: GZIP, kayıpsız bir sıkıştırma sağlar; yani, sıkıştırmayı açtığınızda orijinal veriyi geri alabiliriz. DEFLATE algoritmasına dayanmaktadır. Nginx için  örneğin;
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

Gzip sıkıştırma aracını kullanarak sıkıştırmanın çalışıp çalışmadığını da kontrol edebilirsiniz.

Web hostinginizi değiştirin

Artık Drupal site performansını nasıl geliştireceğinizi biliyorsunuz. Uygulamanızın beklenen performans hedeflerini hala karşılamaması halinde daha hızlı hizmet sağlayan bir ana makine seçmeyi düşünün.

Managed Dedicated Server(s): Yönetilen adanmış sunucu sizin için tüm barındırma ihtiyaçlarınızı halleder. Sadece donanımı almakla kalmazsanız da, her şeyin gerektiği gibi çalışıp çalışmadığından emin olmanız için bir takım uzmanlar edersiniz. Yazılımınızı güncel tutarlar ve herhangi bir sorun varsa sizi uyarırlar. Birden çok yapılandırmayı birden çok sunucuyu dağıtabilirsiniz.

Dedicated Server(s):  Özel bir sunucu düşük gecikme süresi sağlar, bu da çoğu küçük ve orta ölçekli sitelere için hızlı tepki süresi demektir.

Cloud Hosting: Bulut barındırma ölçeklenebilir. Birden fazla sunucunun birbiri ile bağlanmasından oluşan bir servistir. Sunucuların aynı veri merkezi içinde olma zorunluluğu da yoktur, bir network ile birbirlerine bağlı olmaları yeterlidir.

Sonucu kontrol edelim

Masaüstü araçları: ApacheBench (ab), Apache jmeter, The Grinder, EasyQA

Çevrimiçi araçlar: Pingdom, GTMetrix, PageSpeed Insights

Performans optimizasyonu, büyük ölçekli veya küçük ölçekli olsun, her web uygulamasında önemli bir rol oynar. Bu blogda, Drupal uygulamalarının performansını ayarlamak için yapabileceğiniz ana yapılandırma değişikliklerinin bir listesini hazırlamaya çalıştık.

Resim boyutunun, web sitenizin yükleme hızı ve performansı üzerinde büyük bir etkisi olabileceğini unutmayın.

Drupal site performansı ile ilgili bir yardıma ihtiyaç duyarsanız bizimle iletişim kurmaktan çekinmeyin.

Mutlu kodlamalar