Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

PHP CACHE MANTIĞI

merhaba arkadaşlar php ile haber sistemi yaptım bunda cache kullanayımmı önerirmisiniz?
kendi cache sınıfımımı yapayım yoksa hazır mamcache gibi onlarımı kullanayım kndi cachemi yazarken bi sorun meydana geldi şimdi ziyaretcidefteri sayfası war burda gönder deyince ekrana mesaj basılmıyor direk normal sayfa kayudettiğim cache dosyası basılıyor bunun önüne nasıl geçebilirim ve ben resimlerinde cacheden çekilmesini istiyorum bunu nasıl yapacağım..

bide haberleri cache dosyasına kaydediyorya html dosyalarını burda hep doluyor cache yani html'ler hiç silinmiyor buda hostta aşırı yüklnmeye sebep olmazmı alanda..

<?php 
 $cache_dosyasi= md5("anasayfa");
 $cachefile = "cache/".$cache_dosyasi.".html";
 $cachetime = 5*60; // 5dk da bi cache yap
if (file_exists($cachefile) && (time()-$cachetime < filemtime($cachefile))){
 include($cachefile);
 exit;
 }
	
 ob_start();



?>

// burda cache yapılacak içerik alanı

 <?php
	
 $fp = fopen($cachefile, 'w');
 fwrite($fp, ob_get_contents());
 fclose($fp);
 ob_end_flush();


 ?>



yukarda anasayfa yazan yerde eğer haberleri çekeceksem haber-$id ile kaydettiriyorum yani 1 id'li habere tıklayınca kaydediyor 2 ye 3e 4e derken melela 10 kullanıcı günlük 10 farklı habere bakarda 100 tane haber dosyasnı kaydetmiş olacak farklı buda cache boyutunu arttırmazmı??
galiba birşeyleri eksik yada yanlış biliyorum yardım edermisiniz??
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Cevaplar

  • Kesali adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    208 cevap - 2 soru
    Evet 10 kullanıcı ayrı ayrı 10 habere bakarsa 100 tane farklı idye sahip cache dosyası oluşur. Ama cache dosyaları sitenin html hali olduğu 1mb ın üzerine çıkmaz. İşgal ettiği alan pek fazla olmaz yani. Ama size performans olarak geri döner projeniz çok fazla hit alıyorsa cache kullanmak kaçınılmaz oluyor.
    hatta serverın harddiski yerine direk ram i cache olarak kullanma yoluna gitmek gerekebiliyor.
    • sharq adlı üyenin fotoğrafı sharq
      peki yukardaki yazdığım kodla cache işlimeni mi yapayım yoksa memcache falan onlarımı kullanayım?
      10 yıl önce yazılmış
    • Kesali adlı üyenin fotoğrafı Kesali
      Şöyle anlatayım o zaman. Her iki çözümüde farklı yerlerde kullanmak gerekebilir. File cache yani yukardak yöntem küçük orta ölcekli sitelerde çok etkili olur. Aslında her siteye uygulamak lazım o ayrı.

      Memcached adı üzerinde memory cache. Artı ve dezavantajları var. Bir kere file cache e göre çok hızlı en büyük dez avantajı ise harddiskler ramlere göre çok daha ucuz. Yani fazladan 1gb alan almak için 3 4 dolar fazladan ödersiniz ama 1gb memcache için çok daha fazlasını ödemek zorunda kalırsınız. Veya kendi vps yada serverınızda memcache kurabilirsiniz buda yine ram sarfiyatını arttırıcaktır.

      Neyse konuyu özetleyelim.
      Memcached ile siteyi cachelemek yerine sql query leri cachlemek daha mantıklı bir çözüm olur. Zaten javascript ,css,resimler browser üzerinde çok rahatlıkla cachlenebilir bunlara birde kaynak ayırmayabilirsiniz.


      File cache ise cachelenen sayfanın direk browserdaki kaynak kodunu sakladığı için. Bir kere oluşturulur belirlediğiniz süre kadar o sayfayı ziyaret eden herkes oluşturulan bu statik html dosyasını çekmiş olur.
      Sistem yükü bir hayli azalır.

      Tabi bunlar yazılımsal düzenlemeler. Kullandığınız web serverla ilgilde bir takım düzenlemeler yapabilirsiniz. varnish ile filecache tutmak yerine varnish servera cache tutturabilirsiniz. Bu sayede siz filecache ile uğraşmazsınız server bunu otomatik yapar. Nginx keza hem web server olarak çalışır hemde cache tutabilir. Memcache yapılandırması gayet basittir. Loadbalancer da olur biraz teknik detaylar ama vakit buldukça inceleyin derim.

      Özellikle nginx benim favorimdir.
      10 yıl önce yazılmış
    • sharq adlı üyenin fotoğrafı sharq
      cevabın için teşekkür ederim ama çok bişey anlamadım :)

      benim şuanki sorunum iletişim sayfası war burdada aynı koddaki cacheyi kullndım mesajı gönder deyince mesaj veritabanına kaydediliyor ama sayfa olarak html sayfayı include ediyor yani kullanıcıya mesajınız gönderildi yada gönderilemedi diye cevap yazmıyor bu birinci sorunum bunu nasıl düzeltebilirim

      birde ben resimleri falan css dosyalarını hepsini cachelesin istiyorum yani maximum kazanç opencat sistemini biliyorsanız orda resimler cache dosyaında tutuluyor o tarz birşey de ypmak istiyorum buda 2.sorunum yardımınız için şimdiden teşekkr ederim..
      10 yıl önce yazılmış
    • Kesali adlı üyenin fotoğrafı Kesali
      Önemli değil sizin için birşey ifade etmesede cache nedir memcahe nedir gibi konularda merak sahibi olan birilerinin işine yarar.

      İletişim sayfasında cache tutmayın çünkü anlık olarak mesajın gidip gitmemesine göre bir uyarı verdirmek istiyorsunuz. Cache dosyası sabit bir html gibi davranacağı için istediğiniz olay olmaz.

      Resim css cache olayı ise browser üzerinde cache tutmalısınız serverda cache tutmak size hiçbir getiri sağlamaz. Belki css dosyalarını tek dosya haline getirip gzip lerseniz biraz kazanç sağlarsınız. Yine her resim için servera yine aynı sayıda request gidecek yine band harcayacak. Browser üzerinde cachelerseniz resim css dosyaları bir kere serverdan çekilir diğer sorgularda browser üzerindeki cacheden çeker.
      10 yıl önce yazılmış
    • sharq adlı üyenin fotoğrafı sharq
      peki bu dediğinizi nasıl yapabiliriz yani bunun kodlarını falan bilmiyorum mantığınıda tam kavramadım
      10 yıl önce yazılmış