Küçük-orta ölçekli web siteleri için php basit önbelleğe alma tekniği

5 Cevap php

Ben php kullanarak küçük-orta ölçekli site için HTML / Metin içerik önbelleğe arıyordu. Ben çoğunlukla site için Öncelikle ben oturum tabanlı önbelleğe alma için arıyorum DB vb oluşturulan HTML raporu dinamik navigasyon menüsünü kaydetmek gerekir (bu kötü bir fikir mi?). Ayrıca, dosya tabanlı olabilir.

Varolan herhangi bir çözüm çok takdir edilmektedir. Örneğin Zend Framework de onun gevşek bağlı bileşenleri için bilinir. Yani, Zend_Cache bir aday olabilir, ama oturum tabanlı önbelleğe alma adaptörü bulamadı. Ayrıca, tamamen bağımsız bir bileşen değildir. Herkes ben Zend_Cache kullanmak için yapılması gereken sınıfları nelerdir söyleyebilir miyim?

Cache_Lite, bu konuda nedir sizin benimsediğiniz - Başka bir seçenek PEAR'ın nedir?

Ben kolayca önbelleğe alma bileşeni ayırmak ve daha az öğrenme eğrisi ile kullanabilirsiniz yerden başka bir çerçeve var mı?

Teşekkürler.

5 Cevap

Memcached gerçekten hafif ve verimli çözüm olarak, akla geliyor.

Ama aynı zamanda, basit dosyaları içeriği önbelleğe alabilir. Dosya sistemi genellikle hızlı ve sorunsuz okuma / yazma kilitleri işler. Ve bu işlemek için herhangi bir fantezi kütüphane için gerek yok ... fonksiyonlar filemtime, file_put_contents ve file_get_contents ihtiyacınız vardır.

  1. Önbellek filemtime ile fazla N secondes önce yazılmış olup olmadığını kontrol edin ()
  2. Çok eski ise, içerik oluşturmak ve file_put_contents ile yazmak ()
  3. Aksi takdirde, sadece o file_get_contents zekâ yük ()

Düzenleme: Ben birkaç ay önce yaptığı yazılan bir bağlantı eklemek gerekir: Best Solution for caching. Tamamen konuyla ilgili değil, ancak sizin araştırmalarında size yardımcı olabilir :)

Oturum tabanlı önbelleğe alma muhtemelen iyi bir fikir değildir. Bu, kullanıcı başına (herkes için değil) belirli bir sonuca önbelleğe gerekir sınırlı durumlarda sadece uygun.

APC oldukça yaygın olarak dağıtıldığı, böylece ona erişiminiz varsa, ben arka ucunda APC ile Zend_Cache içine bakmak istiyorum. APC mevcut değilse, arka uç düz dosyaları ile Zend_Cache küçük / orta tip siteler için yeterli olmalıdır

JPCache iyi bir hafif önbelleğe kütüphanedir.

Sen CakePHP olarak önbelleğe alma bakabilirsiniz. Ben çerçeve işten ayırmak mümkün olacak şüphe ama dinamik içeriği önbelleğe nasıl anlamak için yardımcı olacaktır.

Most of the php caching libraries are implemented using the output buffer control functions. You can implement your own very simple caching the same way.

<?php

function callback($buffer)
{
  // Code to store output in cache
}

if (/* Test cached copy is still valid */) {
    /* Output cached copy to browser */
    exit(0);
}

ob_start("callback");
?>

<html>...</html>

<?php
ob_end_flush();
?>

Bu çıktının sonunda otomatik olarak tetiklenir yana, dilerseniz ob_end_flush() atlayabilirsiniz.

Unutulmaması gereken ilginç bir şey bu yapı sayfasından daha küçük birimler sarılı olabilir olmasıdır. Örneğin önbelleklemeyi sadece navigasyon menüsü söz. Sen önbelleğe için blok etrafında biraz daha mantık gerekir, ama prensip aynıdır.