Nasıl bir PHP sitesi için bir HTML önbellek uygulamak?

7 Cevap php

Bir PHP sitesi için bir önbellek uygulama en iyi yolu nedir? Açıkçası, (Örnek arama sorguları için) önbelleğe gereken bazı şeyler var, ama ben 'etkisi digg' önlemek emin yapacak iyi bir çözüm bulmak istiyorum.

WordPress için WP-Cache orada olduğunu biliyorum, ama ben WP üzerine kurulu değil özel bir çözüm yazıyorum. Ben (bu kadar basit ise) kendi önbellek yazılı ya da ilgileniyorum, ya da bir güzel, hafif bir çerçeve bana gelin. Ben çok olsa Apache bilmiyorum, bu yüzden bir PHP çerçeve olsaydı o zaman daha uygun olacağını.

Teşekkürler.

7 Cevap

Bir proxy önbellek söz konusu olduğunu ve tam HTML dosyalarını hizmet ediyorsanız, tümüyle PHP atlayarak en iyi performansı alırsınız. WP Super Cache nasıl çalıştığını incelemek.

Uncached sayfaları site olarak benzer URL yapısı ile bir önbellek klasörüne kopyalanır. Daha sonra istekleri üzerine, mod_rewrite önbelleğe alınan dosyanın varlığını notları ve bunun yerine hizmet vermektedir. Diğer RewriteCond direktifler kullanıcılar giriş emin Commenters canlı / PHP isteklerini görmek yapmak için kullanılır, ancak ziyaretçilerin çoğunluğu doğrudan Apache tarafından servis edilecektir.

Sen output buffering seçici (önbelleğe isteyen) ve çıkış bölümleri kaydetmek ve yeterince uzun olmamıştır eğer sonraki kullanıcı için bunları görüntülemek için kullanabilirsiniz. Bu şekilde hala on-the-fly (örneğin, özelleştirilebilir kutular, kişisel bilgiler) sayfanın diğer bölümlerini render ediyoruz.

Önbelleklerini nasıl çalıştığını tam bir açıklama için Mark Nottingham's Caching Tutorial görmek ve nasıl olabilir: gitmek için en iyi yolu, bir proxy önbelleğini (Kalamar, Vernik) kullanımı ve ETAG'ları ile birlikte, uygun Cache-Control/Expires başlıkları hizmet etmektir bir önbellek proxy üzerinden en yüksek performansı almak.

Ayrıca memcached kontrol ve orada veritabanı sorguları (ya da daha iyisi, önceden işlenen sayfa fragmanları) önbelleğe deneyin.

I Memcached veya APC öneriyoruz. Her iki ölü basit API'leri ve kütüphaneler dolu bellek önbelleğe çözümlerdir.

Bu 2 ile sorun bunu Memcached eğer web sunucusu veya başka bir sunucuda bunları yüklemek için ihtiyaç vardır.

APC

Pros:
  • Basit
  • Hızlı
  • Hızları kadar PHP yürütme de
Cons
  • Dağıtık sistemler için çalışmaz, her makine lokal olarak önbelleğini depolar

Memcached

Pros:
  • Hızlı(ish)
  • Tüm web sunucuları kullanmak için ayrı bir sunucu üzerine kurulabilir
  • Yüksek test LiveJournal'a geliştirilen
  • Bütün büyük adamlar (Facebook, Yahoo, Mozilla) tarafından kullanılan

    Cons:
  • APC daha yavaş

  • Olası ağ gecikmesi
  • Biraz daha yapılandırma

Ben bol orada var, kendi yazma tavsiye etmem. Eğer web sunucusu yazılımı yüklemeniz olamaz eğer bir disk tabanlı önbelleğe sahip gidebiliriz, ancak başa çıkmak mümkün ırk sorunları vardır. Başka okurken tek bir isteği dosyaya yazma olabilir.

Aslında bir dakika bile birkaç saniye için, arama sorguları önbelleğe olabilir. Db daha bir kaç kez ikinci güncellenmektedir sürece, bazı gecikme tamam olurdu.

PHP Smarty şablon motoru (http://www.smarty.net) oldukça gelişmiş önbelleğe alma sistemi içerir.

Sen Smarty kılavuzun önbelleğe alma bölümünde ayrıntıları bulabilirsiniz: http://www.smarty.net/manual/en/caching.php

Basit sayfaların önbelleğe alma veya sayfaların parçaları - Armut :: CacheLite sınıfı. Ben de farklı şeyler için APC ve memcache kullanmak, ama gördüğüm diğer cevaplar çok daha eksiksiz ve karmaşık sistemler için daha fazladır. Eğer sadece bir sayfanın bir bölümünü yeniden biraz çaba kaydetmek gerekirse - bir dosya destekli mağaza ile Cache_Lite uygulamak tamamen yeterli ve çok basittir.

Project Gazelle (açık kaynak torrent sitesi) kolayca çok fazla trafik idare edecek kurmak isteyebilirsiniz başka bir web sitesinde kullanabileceğiniz sitede Memcached kurma adım kılavuz bir adım sağlar.

Kaynağını tut ve belgeleri okuyun.