Drupal7 Sitemin performansını nasıl artırabilirim? [kapalı]


10

Drupal'da yeni olan biri için, Drupal Önbelleklemede birçok kaynak olduğunu görüyorum ama hangisini kullanacağından emin değilim.


1
Bunun için meta üzerinde kanonik bir soru isteyip istemediğimizi tartışabiliriz, ancak yine de çok geniş olduğunu düşünüyorum. Performans iyileştirmeleri de içeriğe duyarlı olabilir ve boşlukta yapılamaz.
mpdonadio

Yanıtlar:


26

Bunlar benim deneyimlerimin notlarıdır ve diğerlerinin deneyimlerinden farklı olabilir. Ağırlıklı olarak LAMP yığınını kullanıyorum ve önerilerimde de aynı şeyi düşündüm.

Genellikle takip ettiğim önbellekleme için başparmak kuralları.

  1. Bir Kez İşleme Birden Çok Kez Kullanın.
  2. Mümkün olduğunda eski verilerle yayınlayın
  3. Önbellekleri nadiren temizleyin ve çok spesifik tutun.
  4. Mümkünse değişiklikleri yığındaki en düşük seviyede yapın. LAMP - DCCc: Linux, Apache, Mysql, PHP, Drupal Çekirdek, Katkı ve özel modül.

Bir Drupal Sahasının Performansını Artırın (Artan karmaşıklık sırasına göre)

  1. Çekirdeği güncel tutun, katkıda bulunan modül ve temalar güncellendi. Evet önemli.

  2. APC'yi sunucunuza yükleyin. (Letharion'un önerisine dayanarak en üste taşındı)

  3. Sayfa Önbellekleme: admin / config / development / performance Minimum önbellek ömrü ile Önbelleğe alınmış sayfaların sona ermesi arasındaki fark

  4. Blok Önbellekleme https://drupal.org/project/blockcache_alter Tüm bloklar için önbellek seçenekleri.
  5. Toplu javascript ve css dosyaları - Ön Uç Geliştirmeleri https://www.drupal.org/project/advagg
  6. Gereksiz modülleri devre dışı bırakın. Her modül, bir sayfa yüklemesi için kullanılabilir olması gereken kod miktarını ekler. Ayrıca arama sayısını da arttırır. Mümkün olan her yerde, belirli işlevleri yerine getiren çoklu modül yerine genel bir modül kullanın.
  7. Views içeriğini önbelleğe al - Views için içeriğe duyarlı önbellek https://www.drupal.org/project/views_content_cache
  8. DB günlüğünü devre dışı bırak - https://drupal.org/project/syslog_ng öğesini kullanın
  9. 404 Hatalarını Azaltma - http://www.brokenlinkcheck.com/
  10. Hızlı 404 Yanıt - https://drupal.org/project/fast_404 - Sunucu düzeyinde işlemeyi deneyin.
  11. Müşteri Tarafı Doğrulamaları - https://www.drupal.org/project/clientside_validation
  12. Resmi Sıkıştır - https://www.drupal.org/project/imageapi_optimize
  13. Tembel Görüntülerin Yüklenmesi - Gereksiz görüntüleri yüklemeyin - https://www.drupal.org/project/lazyloader
  14. Sprite Sayfalarını Kullanın - https://www.drupal.org/project/spritesheets

  15. Minimum Önbellek Yaşam Süresi Değerini daha yüksek bir sayıya ayarlayın ve belirli sayfaların önbelleklerini temizlemek için önbellek temizleme modüllerini kullanın - Bir düğümü düzenlediğimde / güncellediğimde anonim kullanıcı için tüm sayfa önbellekleri kaybolur

  16. Sorguları izlemek için Devel Modülünü kullanın.
  17. Görüntüleme Sorgularını Yeniden Yaz / Görünümler aşırıya kaçarsa kaçının.
  18. XHProf - https://www.drupal.org/project/XHProf
  19. FPM, HHVM.
  20. DB Profil Oluşturma ve Ayarlama - https://www.drupal.org/project/dbtuner
  21. Boost kullanın , gerekli değilse Bootstrap DB'yi kullanmayın. https://drupal.org/project/boost Küçük ve orta ölçekli sitelerin çoğu için Boost yeterince iyidir ve Ters Proxy'lere ihtiyacınız olmayabilir.
  22. CDN kullanın - https://www.drupal.org/project/cdn Kurulumu kolaydır.
  23. Önbellek tablolarınız büyükse Memcached kullanın - Memcached'i yükleyebilir ve bunun için RAM kurabilirseniz, göründüğü kadar karmaşık değildir.
  24. Etags - Etags'ı düzgün yapılandırın. https://developer.yahoo.com/blogs/ydnfiveblog/high-performance-sites-rule-13-configure-etags-7211.html
  25. Ters Proxy Sunucusu - Vernik kullanın (en azından varlıklar için). Kullanıcılarınızın çoğu anonimse çok yardımcı olur.
  26. Sıkıştırılmış aktarım - Gzip sıkıştırmasını etkinleştir
  27. Hayatta Kal - Mümkün olduğunca Kalıcı Bağlantılar kullanın.
  28. Aşamalı JPEG'ler -
  29. KODDA ÖNLEME - Eaton'ın blogu harika. http://www.lullabot.com/blog/article/beginners-guide-caching-data-drupal-7
  30. Önbellek Isıtıcısı Gerçekleştir - https://www.drupal.org/project/cache_warmer - Önbellek Son kullanıcı isabet etmeden önce sayfaları ısıtın.
  31. Master Slave DB Config - https://www.drupal.org/project/autoslave bir tane kurmanızı kolaylaştırır.
  32. Veritabanı Kümeleri - /programming/1163216/database-cluster-and-load-balancing
  33. Yük Dengeleyiciler - http://en.wikipedia.org/wiki/Load_balancing_(computing)
  34. Sezgisel Önbellek Isıtma'yı kullanın - https://www.drupal.org/project/cache_graceful
  35. Kimliği Doğrulanmış Kullanıcı Önbellekleme - https://www.drupal.org/project/authcache

2
Mükemmel cevap, ama benim için güçlü bir şey öne çıkıyor, üstte APC'nin olmaması. APC'nin yerini almak son derece kolaydır, aşağı taraf yoktur ve kazançlar gerçekten büyük olabilir. Bence zirveye çıkmalı. (Belki de optimizasyon nihayet entegre olduğu için PHP 5.5'ten sonra gerekli olmadığına dair bir yorum ile)
Letharion

1
Belki de önbellek için en kolay kazançlar hakkında bir şeyden bahsedebilir misiniz? Siteniz çoğunlukla statik içerik gerektiriyorsa (sayfalar tüm kullanıcılar için aynıdır, bu nedenle giriş yapmazsanız), Vernik veya Boost en büyük kazançları sağlar.
Dominic Woodman


3

Gokul'un cevabına bir arkadaş olarak, Drupal'da (karmaşıklık tarafından sipariş edilmemiş) önbelleğe almak istediğiniz şey hakkında düşünmek istediğim yol:

Önbelleğe alma, tekrarlanan etkinlikleri hızlandırmak anlamına gelir.

Bir Drupal web sitesinde yer alan büyük tekrar eylemleri:

  • Bir web sayfasını arama
  • Bir web sayfası oluşturmak için PHP kodu çalıştırma
  • Veritabanından PHP çağırma öğeleri

Tüm bir web sayfasını önbelleğe alma

En büyük önbellek kazançları, PHP kodunu çalıştırmadan veya veritabanını çağırmadan tüm bir web sayfasını önbelleğe almanın bir yolunu bulmaktır.

Bunu Vernik veya Boost ile yapabilirsiniz . Kullanıcı bir sayfayı aradığında hiçbir hesaplama yapmadan sayfanın bir kopyasını döndürür.

Ancak, sayfanın bazı bölümlerinin farklı olması gerekiyorsa (örneğin, kullanıcılar giriş yapar ve adları en üstte görünürse) bu işe yaramaz.

Bunun işe yaraması için Authcache'e bakmanız gerekir.

PHP Önbellekleme

PHP'yi APC ile önbelleğe alabilir veya 5.5 veya daha yeni bir sürüme sahipseniz farklı bir önbellek yerleşik olarak bulunur.

Bu sunucu tarafında yapılır ve PHP kodunuzun parçaları hatırlanacak anlamına gelir. PHP'yi Drupal için önbelleğe alıyorsunuz ancak teknik olarak Drupal ile etkileşime girmiyorsunuz.

Veritabanı Önbelleklemesi

Veritabanından bilgi alma çağrıları pahalıdır.

En yaygın veritabanı önbellekleme mekanizması memcache'dir .

Bu, veritabanı nesnelerini RAM'de önbelleğe alır, bu nedenle sabit diskteki bir veritabanı nesnesine çağrı yapmak yerine, çok daha hızlı olan RAM'den çekersiniz.


1
Redis aynı zamanda harika bir bellek içi önbellek deposu, en azından deneyimlerimdeki memcache ile karşılaştırılabilir (memcache muhtemelen kümeleme ile kazanıyor olsa da)
Clive
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.