Birisi dinamik PHP sayfaları önbelleğe hakkında biraz açıklayabilir misiniz?

4 Cevap php

Ben dinamik PHP sayfaları önbelleğe merak ediyordum. Bu PHP kodu ön derleme ve byte-kodu saklayarak hakkında gerçekten var mı? Bir daha derlenmiş ve sürüm ve böylece sistem. Pyc dosyası. Py dosyasından daha yeni olduğunu görürse, o zaman yeniden derlemek için rahatsız olmaz yürütmek için hazır. Py dosyası Python. PYC benzer bir şey .

Yani PHP önbelleğe bu esas hakkında? Birisi bu biraz daha bilgi verebilir misiniz?

4 Cevap

Sen neden bahsediyorsun önbelleğe türüne bağlıdır. Opcode önbelleğe alma diyorsun yok gibi tam. Bu opcode alır ve bir kullanıcının belirli bir sayfasını ziyaret ettiğinde, onun opcode zaten derlenmiş ve önbellek ise, o sayfa yeniden derlenmiş olması gerek kalmaması önbelleğe alır. Eğer bir php dosyasını değiştirirseniz önbelleğe alma mekanizması bu algılar ve kod yeniden derlemek ve önbellek koyacağız.

Eğer sayfa üzerinde veri önbelleğe alma hakkında konuşuyor, bu tamamen farklı bir şeydir.

Opcode önbelleğe alma hakkında daha fazla bilgi için Alternative PHP Cache bir göz atın.

Ne açıklayan bir PHP accelerator ve onlar tam olarak ne dedi yapmak; aynı script birden infaz yalnızca bir derleme gerektiren böylece önbelleğe alınmış, derlenmiş bayt kodu saklayın.

Bu PHP komut yürütme sonuçlarını önbelleğe da mümkündür. Önbelleğe beri sayfanın içeriği değişmiş olabilir çünkü bu genellikle, mantık en azından biraz gerektirir. Örneğin, general cache feature provided by CodeIgniter de bir göz atabilirsiniz.

Peter D's answer iyi opcode önbelleğe kapsar. Sayfalarınız basit bu (öznel) sayfa nesil zaman% 50 üzerinde seni kurtaramaz!

Hakkında bilmek istediğiniz önbellek diğer verilerin önbelleğe. Bu veritabanı sonuç kümelerini önbelleğe olabilir, bir web hizmeti yanıt, HTML topakları veya hatta tüm sayfaları!

Basit bir 'örnek' göstermek gerekir:

    $cache = new Cache();
    $dataset;

    if (!$dataset == $cache->get('expensiveDataset')){

      //run code to fetch dataset from database
      $dataset = expensiveOperation();
      $cache->set('expensiveDataset', $dataset);

    }
echo $dataset; //do something with the data

Nesne, fonksiyon ve sayfa düzeyinde önbelleğe alma ile yardımcı kütüphaneler vardır. Eğer görmek isterseniz Zend Framework's Zend_Cache bileşeni düşünce ve harika bir uygulama için besindir.

Önbelleğe alma birkaç farklı formları aslında vardır. Ne tür eAccelerator, MMCache, vs gibi paketleri tarafından işlenir bahsediyorsan

Bu gerçekten bir performans artışı aslında HTML çıktı uygulanabilir, ya da tekrarlayan sorgular için önbelleğe alma DB sonuç kümeleri önbelleğe olduğu alırsınız bazı yerde, yardımcı olsa da (bir şey gibi memcache).

Opcode önbellek mekanizmaları herhangi Kurulumu çok kolay, ama ben başvurulan önbelleğe diğer iki alanda size çok büyük performans avantajı elde edecektir.