Sql cache, file cache ile nerdeyse ayni mantiga sahip bir php cache uygulamasidir. Tek farki sql cache verileri disk uzerinde degil mysql tablolarinda tutmasidir. Bunun file cache’ye gore bir cok artilarinin oldugunu dusunuyorum. Cunku bazi olumsuz durumlar file cache yapisinin iyi sekilde calisamamasina neden oluyor. Ornegin kullandiginiz hostun yada sunucunun disk yapisinin veya yazma hizinin dusuk olmasi cache sirasinda yavaslamalar ve optimasyon sorunlari yasamasina neden olur. Ozellikle SATA diskler uzerinde bu biraz daha gozle gorulur derecede kendini hissettirmektedir. SSD ve sas disk yapilari file cache icin en uygun olanlari ancak bunun eksikliginde sizlere sql cacheyi tavsiye edecegim. Mysql yapisi hizli islem yapmaya cok musait, file cacheden daha hizli ve aktif sekilde kullanim alani yaratir size.

Normalde localhostda sql cache yazisi icin denemeler ve testler yapiyordum, bunun icin bir kalip hazirladim, bu kalibi kullanarak birden fazla alan icin cache olusturabilirsiniz. Hazirladigim kalipda sadece cache alinacak alanin ismi ve cachede bekletilecegi suresini girmeniz yeterli olacak. Ve cache alinacak alanida belirttikten sonra hic ellemeden zamani geldiginde o bolum kendini guncellemis olacak. Mantik olarak cache alinan alanin ne kadar cachede kalacagi ve ne kadar ayni sorgunun gosterilecegini belirtebiliyoruz. boylece cache almadan onceki 50,100lerce sorguyu tek sorguya indirgemis olacagiz.

Uygulama iki bolumden olusuyor:

1: Fonksiyon bolumu, sizin duzenlemenize gerek olmayan bolum.

2: Cache icin kullanacaginiz kalip kod yigini.

Anlatima baslarken bunun biraz karisik gelebilecegini ancak mantik yuruttugunuzde gayet basarili bir calisma oldugunu anlayacaksiniz. Ayni tarz sistemi ayri tablo acmadan, sadece hazirladigim kod yiginini kullanarak wordpress de de istediginiz alani (buyuk sorguya neden olan yerleri) cache ye alabileceksiniz ki bu wordpress icin olan dokumani bir sonraki yazimda yazacagim.

Oncelikle kodu uygulayacaginiz sayfada mysql baglantisinin saglanmis olmasi gerekli, eger mysql baglantisi saglanmamis ve yeni basliyorsaniz asagidaki mysql baglanma kod yapisini kullanabilirsiniz, tabi oncesinde bu islem icin database olusturmaniz gerekli, yada var olan databaseye baglanti acmaniz gerekli asagidaki kod ile:

Kendinize gore duzenlemeyi unutmayin.

Bu islemin hemen ardindan cache verilerini tutacagimiz tablomuzu mevcut databasemize eklememiz gerekli. Asagidaki kodu phpmyadmin den sorgu kismindan uygulayin:

Sorguladiginiz bu tabloya cache alanlari icin bize gerekli olan bilgileri kaydedecegiz, ve tekrar sonrasinda ekrana yazdiracagiz.

Simdi sira fonksiyonlarimiza geldi. Normalde fonksiyonlari kullanmamistim testlere ilk basladigimda, ancak hem kolaylik saglamasi hemde yeni arkadaslarin fonksiyonla olan baglarini guclendirmek adina boyle bir yol sectim. Hemde cache alacagimiz kalip kod yigini daha temiz ve sade bir duruma geldi. yinede bunu yazdigima bakmayin, anlayanlar icin basit, anlamayanlar icin biraz fazla gorunebilir :)

Bu fonksiyonlari ister ayri sayfadan, istersenizde cache alacaginiz sayfada bir yere ekleyin. Eger coklu bir sistemde calisiyorsaniz her sayfaya include ettiginiz belli dosyalariniz vardir, bu include ettiginiz dosyanin icerisine eklemeniz daha mantikli olacaktir.

Kod icerisinde ki alanlari anlayabileceginiz sekilde yorumlamaya calistim.

Simdi ise en can alici noktaya geldik diyebilirim. Cache almamizda bize en cok yardimci olacak alanlardan birisi, kalip kod yigini alanina geldik. Bunu sisteminize entegre etmeyi basardiginiz,da sonraki uygulamalarda zorluk cekmeyeceginize eminim. Bir kere yapan, sonraki eklemelerde zorlanmayacaktir.

Kod icerisinde gerekli aciklamalari yaptim, ancak sonrasinda da olayi daha iyi kavrayabilmeniz icin onemli bolumleri detayli sekilde yazacagim:

Kodlarin icerisinde butun alanlarin ne islem ve ne fonksiyon gorevi gordugunu belirttim.

Yinede unutmamaniz gereken kalip kod yigini alanindaki “Cachelenecek kodlar ve sorgular alani (aynisi)” kismi ikiside ayni olacak, yani bu alana cache alinmasini istediginiz sorgularinizi, kodlarinizi girmeniz gerekli. Genelde yuksek soegular oluyor, 50,60 sorgu gibi, o zaman buradaki uygulama ile sorgu sayisi 2 ye kadar dusecektir. Boylece gerek acilislarda olsun, gereksede sonraki sayfa gezintilerinde sitenizde gozle gorulur hizlanma olacaktir. bunun yaninda sunucunuzu yada hostunuzu rahatlatmasida cabasi :)

Bu uygulamanin faydasi bir tek mysql sorgularinda olmuyor arkadaslar, sistemi zorlayacak php sorgularinda veya fonksiyonlarinda da cache alma islemi uygulandigi icin ciddi derecede sisteminizi rahatlatacaktir.

Sitenizin hizlanacaginida hesaba katarsaniz hem kullanici sitenize girdiginde keyifli zaman gecirir, hemde arama motorlari icin cazip bir alan haline gelir. Guncellik konusuna deginmiyorum, orasi size bagli. Ancak hic bir kullanici, siz bile bir sayfanin acilmasini 5 saniye beklemek istemezsiniz :)

Uygulamayi gelistirmeye yetecek zamanim olursa el atar arada bir yenilikler eklemeye calisirim, bunun haricinde gelistirme amacli kodlari kullanacak arkadaslara simdiden basarilar diliyorum. Anlamadiginiz bir yer olursa konu altindan yorum ile beni uykumdan edip, pc basina cagirabilirsiniz.

Sevgiyle kalin, bol kodlu gunler :)

5 YORUMLAR

    • yontem ayni, ancak extra tablo veya mysql baglantisina gerek yok, wordpressin kendi fonksiyonlari ile kolayca hallediyorum. bugunde onu yazacagim, herkesin uygulayabilmesi acisindan guzel bir makale hazirlayacagim :)

Bir Cevap Yazın