wmaraci reklam
lidertakipci

WordPress SQL cache uygulaması – YENİ

3 Mesajlar 1.271 Okunma
advertseo
wmaraci reklam

isousluer isousluer Usluer Kullanıcı
  • Üyelik 05.04.2011
  • Yaş/Cinsiyet 31 / E
  • Meslek Yazılım Geliştirici
  • Konum Konya
  • Ad Soyad İ** U**
  • Mesajlar 4900
  • Beğeniler 1419 / 2962
  • Ticaret 45, (%100)
Daha once burada paylastigim uygulamanin daha basit, daha hizli ve stabil versiyonunu paylasacagim arkadaslar. Aslinda bunu daha once yazmayi dusunuyordum ancak yogun is temposu, yorgunluk, yogunluk v.s derken epey bir gecikmeme neden oldu.

Bu uygulamanin faydalarindan bahsedeyim biraz:
File cache uygulamalarindan daha iyidir.
Mysql ile cache tuttugumuz icin daha verimli ve daha hizlidir.
sisteminizdeki yuksek sorgulu alanlari hedef aldigimiz icin sorgu sayisinda buyuk bir dusus gosterir.
500 sorguyu 2 sorguya indirgeyebilir, sitenin hizini salise bazina kadar cekebilir.
kullanmazi, ozellestirilebilmesi kolaydir.

Daha onceki yazimda wordpress in options tablosunu kullanarak cache ye alacagimiz alandaki bilgileri yedekliyorduk. Ancak bu sefer uygulama alanindaki fonksiyonumuzu degistiriyoruz ve wordpress in bu ise uygun diger bir fonksiyonunu kullaniyoruz: get_transient

Bu seferki kod kalibimiz cok kucuk ve uygulanabilirligide cok kolay. Bunun icin asagidaki kodlara bakabilirsiniz:

$cache_ismi = "sidebarcache";
$cache_zamani = 60 * 10; // 60*10=600 buda 10 dakikaya esittir heralde :)

// Cache varmi yokmu kontrolunu yaptiriyoruz. eger yoksa sorgu yaptirip, ciktiyi DBye kaydeiyoruz.
if(false === get_transient($cache_ismi)){
ob_start();

/******* Cache Alinacak sorgular, kodlar v.s... *******/

// Burda ciktiyi DB ye kaydediyoruz..
set_transient($cache_ismi, ob_get_contents(), $cache_zamani);
ob_end_flush();

// Eger cache varsa DBden bilgileri cekip ekrana yazdiriyoruz.
}else{

// Echo ile DBdeki cache bilgilerini ekrana yazdiriyoruz.
echo get_transient($cache_ismi);
}

Kod kalibimiz yukardadir, goreceginiz gibi bir onceki makalemdekinden cok kolay, cok basit ve uygulanabilirligi cok kolaydir. Ozellikle kisa ve kucuk olmasi isimizi daha cok kolaylastiriyor.

Bu kod kalibini birden fazla alanda kullanabilirsiniz. Bunun icin cache_ismi kismini her alan icin degistirmeni yeterli olacaktir. yinede yapmaniz gerekenleri kisaca aciklayayim, daha onceki makalemde anlamayan arkadaslar vardi.

Oncelikle kod kalibinda goreceginiz en bastaki bu alani cache alacagimiz alana gore duzenleyin:

$cache_ismi2 = "cache2";
$cache_zamani2 = 60 * 10; // 60*10=600 buda 10 dakikaya esittir heralde :)

daha sonra asagidaki isimlerini duzenledigimiz alanlari guncelleyelim:

// Cache varmi yokmu kontrolunu yaptiriyoruz. eger yoksa sorgu yaptirip, ciktiyi DBye kaydeiyoruz.
if(false === get_transient($cache_ismi2)){
ob_start();

/******* Cache Alinacak sorgular, kodlar v.s... *******/

// Burda ciktiyi DB ye kaydediyoruz..
set_transient($cache_ismi2, ob_get_contents(), $cache_zamani2);
ob_end_flush();

// Eger cache varsa DBden bilgileri cekip ekrana yazdiriyoruz.
}else{

// Echo ile DBdeki cache bilgilerini ekrana yazdiriyoruz.
echo get_transient($cache_ismi2);
}

Son olarak kod icindeki bu alana cache alinmasini istediginiz kodlari ekleyin:
/******* Cache Alinacak sorgular, kodlar v.s... *******/

Bunlardan sonra islemi basari ile gerceklestirmis olacaksiniz. Daha net anlayabilmeniz icin basit bir sidebar.php dosyasindaki kodlari cache almayi gosterecegim. Boylece sidebarda istediginiz kadar bilesen kullanabilirsiniz, cunku sorgu sayisi ciddi anlamda optimize edilecektir.

Ornek sidebar.php icin wordpress in default temasi olan Twenty_Ten temasinin sidebar.php dosyasini ela alacagim. Ornek sidebar.php dosyasi asagidaki gibidir:

< ?php /** * The Sidebar containing the primary and secondary widget areas. * * @package WordPress * @subpackage Twenty_Ten * @since Twenty Ten 1.0 */ ? >


< ?php /* When we call the dynamic_sidebar() function, it'll spit out * the widgets for that widget area. If it instead returns false, * then the sidebar simply doesn't exist, so we'll hard-code in * some default sidebar stuff just in case. */ if ( ! dynamic_sidebar( 'primary-widget-area' ) ) : ? >




  • < ?php _e( 'Archives', 'twentyten' ); ? >


    < ?php wp_get_archives( 'type=monthly' ); ? >


  • < ?php _e( 'Meta', 'twentyten' ); ? >


    < ?php wp_register(); ? >


    • < ?php wp_loginout(); ? >



< ?php wp_meta(); ? >


< ?php endif; // end primary widget area ? >




< ?php // A second sidebar for widgets, just because. if ( is_active_sidebar( 'secondary-widget-area' ) ) : ? >


< ?php dynamic_sidebar( 'secondary-widget-area' ); ? >




< ?php endif; ? >

Simdi bu kodlara benim yukarida ekledigim kalip kodunu uyguluyorum ve asagidakileri elde ediyorum:

< ?php /** * The Sidebar containing the primary and secondary widget areas. * * @package WordPress * @subpackage Twenty_Ten * @since Twenty Ten 1.0 */ /* EKLEDIGIM BIRINCI KISIM BASLANGIC */
$cacheSIDEBAR = "cacheSIDEBAR";
$cache_zamani = 60 * 10; // 60*10=600 buda 10 dakikaya esittir heralde :)

// Cache varmi yokmu kontrolunu yaptiriyoruz. eger yoksa sorgu yaptirip, ciktiyi DBye kaydeiyoruz.
if(false === get_transient($cacheSIDEBAR)){
ob_start();
/* EKLEDIGIM BIRINCI KISIM BITIS */ ? >




< ?php /* When we call the dynamic_sidebar() function, it'll spit out * the widgets for that widget area. If it instead returns false, * then the sidebar simply doesn't exist, so we'll hard-code in * some default sidebar stuff just in case. */ if ( ! dynamic_sidebar( 'primary-widget-area' ) ) : ? >




  • < ?php _e( 'Archives', 'twentyten' ); ? >


    < ?php wp_get_archives( 'type=monthly' ); ? >


  • < ?php _e( 'Meta', 'twentyten' ); ? >


    < ?php wp_register(); ? >


    • < ?php wp_loginout(); ? >



< ?php wp_meta(); ? >


< ?php endif; // end primary widget area ? >




< ?php // A second sidebar for widgets, just because. if ( is_active_sidebar( 'secondary-widget-area' ) ) : ? >


< ?php dynamic_sidebar( 'secondary-widget-area' ); ? >




< ?php endif;
/* EKLEDIGIM IKINCI KISIM BASLANGIC */
// Burda ciktiyi DB ye kaydediyoruz..
set_transient($cacheSIDEBAR, ob_get_contents(), $cache_zamani);
ob_end_flush();
// Eger cache varsa DBden bilgileri cekip ekrana yazdiriyoruz.
}else{
// Echo ile DBdeki cache bilgilerini ekrana yazdiriyoruz.
echo get_transient($cacheSIDEBAR); }
/* EKLEDIGIM IKINCI KISIM BITIS */ ? >

Ekleme yaptigim yerleri gorebilirsiniz. Suanda bu sidebar dosyasinin yapacagi sorgu sayisi 1 yada 3 u gecmeyecektir. Ne kadar sorgu olursan olsun, isterse 500-1000 sorgu sonunda cacheye aldigindan sonraki belirledigimiz sure icinde her giren kisi sadece sisteme 2-3 sorgu bindirecektir. Buda wordpressin hostu yordugundan sikayetci arkadaslar icin bulunmaz bir nimet olacaktir :)

Yeni yazi eklendiginde yada duzenlendiginde CACHE temizleme (otomatik)

Sitenize yeni yazi eklediginizde yada bir yaziyi guncellediginizde cachelerin bosaltilmasini ve yeniden guncel hali ile cache alinmasini kolaylastirmak icin functions.php dosyasina asagidaki kodlari ekleyin:

function kuaza_cachesilhepsini(){
delete_transient( 'CACHE1' );
delete_transient( 'CACHE2' );
delete_transient( 'sidebarCACHE' );
}
add_action('publish_post', 'kuaza_cachesilhepsini');
add_action('update_post', 'kuaza_cachesilhepsini');
add_action('delete_post', 'kuaza_cachesilhepsini');

Bu kodlar ne is yapar?: sitenize yeni yazi eklediginizde, duzenlediginizde yada sildiginizda ALINAN CACHE iceriklerini temizler. Boylece yeni yazi ekledikten sonra sitenize girenler yeni yazilarinizi cache suresinin bitmesini beklemeden gormus olurlar.

Kullanimi ise basitdir!: delete_transient( ‘CACHE1' ); seklinde eklediginiz cache isimlerini sirasi ile alt alta ilk fonksiyona ekleyin. Bu kadar. eklediginiz cache isimleri ile eslenen cache icerikler: yeni yazi yazildiginda, silindiginde yada guncellendiginde silinecektir.

Bu eklemenin gerekli olabilecegini dusundum, cunku cache suresini 24 saat belirten arkadaslarin bu caheleri bosaltmazi icin DB ye girmesi gerekecektir. Bu yeni eklemem ile bu dertden kurtarmis oluyorum sizi. Bu yuzden degerimi bilin :)

Konuyu kavrayabilmeniz icin detaylara onem verdim, yoksa cok kucuk bir kod kalibidir, onceki makale gibi anlamayanlarin cikacagini zannetmiyorum ama yinede anlamayan arkadaslar olursa yorum yapmalari yeterlidir, her konuda yardimci olmaya calisacagim, hor gormeyecegim :D

Kaynak: http://www.makaleci.com/wordpress-sql-cache-uygulamasi-yeni.html
kasparow116 olkunmustafa

kişi bu mesajı beğendi.

wmaraci
reklam

kasparow116 kasparow116 WM Aracı Kullanıcı
  • Üyelik 27.02.2012
  • Yaş/Cinsiyet 34 / E
  • Meslek öğretmenlik
  • Konum İstanbul Avrupa
  • Ad Soyad ** **
  • Mesajlar 359
  • Beğeniler 74 / 96
  • Ticaret 10, (%100)
Bu bilgilerin çok faydası dokundu. Teşekkürler:)
 

 

Öğretmenlikte.

escaperx escaperx Web Developer Kullanıcı
  • Üyelik 03.06.2011
  • Yaş/Cinsiyet 25 / E
  • Meslek Sistem Yöneticisi
  • Konum Ankara
  • Ad Soyad İ** K**
  • Mesajlar 408
  • Beğeniler 253 / 44
  • Ticaret 1, (%100)
Çok faydalı bir yazı, eline sağlık İsmail abi :)
 

 

wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al