Ben önbelleğe ne tür kullanmalıyım?

3 Cevap php

PHP ve MySQL kullanan bir seri ilanlar sitesi var.

Ben de javascript kullanır çeşitli sayfaları var.

I need to know what type of caching to use to increase performance on my site... There is alot of 'constant' images like menues, sidebars, background-images which probably can be cached in a way.

Web tarayıcıları otomatik veya eğer ben bunu yapmak için bir parça kodu yazmak zorunda bu görüntüleri önbelleğe olmadığını biliyor musunuz?

Ben doğru yönde rehberlik ihtiyacı ...

Ayrıca, bir şekilde büyük php fonksiyonlarını önbelleğe için bir yol var mı? (Eğer pencerelerde bir uygulamayı açtığınızda olduğunu bilgisayarınızı rstarted varsa gibi, app, bir şekilde önbelleğe alır, ve bunu açık bir dahaki sefere çok daha hızlı açılacaktır.)

Teşekkürler

3 Cevap

Statik içerik (js, resim, favicon, düz HTML) üzerine sona HTTP başlığı ayarlamak için (Eğer web sunucusu olarak apache kullanıyorsanız) Siz mod_expire kullanabilirsiniz, böylece sona kadar tarayıcı bu nesneyi talep etmeyecektir. Barındırma ve hedef kitleye bağlı olarak bu statik içerik (resim, css, javascript) barındırmak için Akamai olarak servisini kullanmak iyi bir fikir olabilir.

Sunucu tarafında (PHP) performansını artırmak için başlangıç ​​için, darboğazları tespit etmek gerekir. Bunu yaptığın için iyi bir yaklaşım web sitenizde bazı günlük uygulamak olacaktır (SQL sorguları ve kaç saniye sonuç almak için, ne sayfa en çok zaman alıp ne fonksiyon, görülüyor). Bu çalışma birkaç hafta / gün izin verir. Bu analiz ve SQL refactor ne fonksiyon önbellek, sorguların ne bilemez.

Eğer aceleniz varsa hızlı ve kirli bir yaklaşım en iyi 10 en çok görüntülenen sayfa olsun ve diskte bunları önbelleğe etmektir. Bu işe ancak web sitenizin gerçekten dinamik ve neredeyse gerçek zamanlı bilgi gerekirse sık önbellek geçersiz olacak. Web sitenizin bazı giriş / çıkış işlemi varsa da sorun yaratabilir. Diğer bir yaklaşım, (karmaşık işlem, DB / bağlantısı) üretmek için genellikle daha pahalıdır, bu sayfanın bir kısmını önbelleğe etmektir.

Böyle önbellek idaresi yapmak için PHP üzerinde olabilir araçları vadede:

  • APC: Bu aracı PHP ön derleme bazı önbelleğe alma özelliği var, artı
  • memcached: Bir dağıtılmış önbellekleme sistemi
  • eAccelator: ön derleme
  • xcache: ön derleme

Geçenlerde başlatılan bir site için, ben düz HTML benim PHP dosyaları önbelleğe () ob_start kullanarak bazı kodlar yazdım. İşte bir örnek:

$cacheFile = 'cache/home.html';
$cacheTime = 600;

if (file_exists($cacheFile) && time() - $cacheTime < filemtime($cacheFile)) {
    require $cacheFile;
} else {
    ob_start();

    // Your dynamic code

    $fp = fopen($indexCacheFile, 'w');
    fwrite($fp, ob_get_contents());
    fclose($fp);
    ob_end_flush();
}

Sitenin etrafında yaklaşık bir ay olmuştur ve trafik çok şey yapmıştır. Yukarıdaki kod benim sunucuyu birden çok kez kurtardı.

Sen Squid gibi bir önbellek proxy veya çeşit kullanabilirsiniz PHP accelerator. Sorguladığınız veriler çok değişmez olmadığını Ayrıca, önbelleğe alma MySQL sorgu sonuçları iyi bir fikir olabilir.

Başka bir cevap belirtildiği gibi dosyalar üzerinde damgaları değiştirmek değilse, statik içerik genellikle kullanıcıların tarayıcıları tarafından önbelleğe alınır.