Yii Framework'te Caching Kullanımı ve Örnekleri

Yii Framework'te Caching Kullanımı ve Örnekleri

Yii Framework'te caching kullanımı ve örnekleri: Site hızlandırmak için önemli bir adım olan caching, Yii Framework'te nasıl kullanılır? Örneklerle ayrıntılı olarak açıklayalım Detaylı bilgiye ulaşmak için tıklayın

Yii Framework'te Caching Kullanımı ve Örnekleri

Yii Framework, kullanıcılara web uygulamaları geliştirmeleri için bir araç sunmaktadır. Ancak, sayfa hızı önemli bir faktör olduğundan, uygulamanın hızı için birkaç optimizasyon yapılması gerekmektedir. Caching, bu optimizasyonlardan biridir ve Yii Framework, kullanıcılara farklı türlerde caching seçenekleri sunmaktadır. Bu yazıda, Yii Framework'te cachingin ne olduğundan, neden önemli olduğundan ve nasıl kullanılabileceğinden bahsedeceğiz.

Caching, bir web uygulamasının hızını artıran bir yöntemdir. Web uygulaması, kullanıcının talebi üzerine verileri işlemek ve sonuçları göstermek için belirli bir zaman dilimine ihtiyaç duyar. Ancak, bazı durumlarda, bu veriler sık sık değişmez veya aynı talep birden fazla kez gelir. Bu durumda, her seferinde verileri yeniden işlemek yerine, bu verileri önbellekleyebilir ve sonraki taleplerde önbellekten verileri getirebiliriz. Bu, hem uygulamanın hızını artırır, hem de ağırlık yaratan işlemleri azaltır. Yii Framework, bu işlevselliği kullanıcılara farklı türlerde sunar.

  • Page Caching: Sayfa caching, birinci dereceden önbelleklemenin bir türüdür ve belirli sayfaların tamamını cache eder. İşleyişi oldukça basittir. Bir kullanıcı talep ettiğinde, önbellekten sayfayı alır ve kullanıcıya hızlı bir şekilde sunar. Bu tür caching, özellikle çok sayfadan oluşan web uygulamalarındaki hız artırımına önemli katkı sağlar.
  • Page Fragment Caching: Sayfa önbelleklemesine benzer şekilde, sayfa bölümleri de cache edilebilir. Belirli bir sayfa parçasının önbelleğe alınması, verilerin düzenli olarak işlenmesini önler. Bu tür caching, sayfanın her bir bölümünün farklı verilere dayandığı büyük projeler için idealdir.
  • Data Caching: Data caching, verilerin cache edilmesi anlamına gelir. Yii Framework, birkaç veritabanı sürücüsü için dahili destek sunar.

Yii Framework'in caching yapısı oldukça esnektir ve her bir caching türü, kullanım alanına göre optimize edilmiştir. Bu yazıda, bir örnek uygulama ile her bir caching türünün kullanımı anlatılacaktır. Ayrıca, Yii Framework'te cache temizleme ve cache dependency/tagging konuları da ele alınacaktır. Yii Framework'te caching yapısı, her geçen gün daha önemli hale gelen sayfa hızı optimizasyonu için önemli bir araçtır.


Caching Nedir?

Caching, internet sayfalarının hızlandırılması ve sunucu yükünün azaltılması için kullanılan önemli bir kavramdır. Yii Framework'te caching, sayfa hızı optimizasyonu için en etkili araçlardan biridir. Caching, önceki kullanıcıların ziyaret ettiği sayfaları hafızada tutarak, bir sonraki kullanıcının o sayfaya erişimini hızlandırır. Bu sayede, sunucu kaynakları daha verimli kullanılmış olur ve web sayfaları daha hızlı açılır.

Yii Framework'te kullanılan caching teknikleri sayesinde, web sayfaları daha az sorgu göndererek daha hızlı yanıt verebilir. Ayrıca, caching sayesinde sunucu yükü de azalacak ve kullanıcılar internet sayfalarına daha hızlı bir şekilde erişebilecektir. Bu nedenle, Yii Framework'te caching kullanımı oldukça önemlidir ve web geliştiricileri tarafından sıklıkla tercih edilmektedir.


Cache Türleri Nelerdir?

Yii Framework'te caching, sayfa hızı optimizasyonu için oldukça etkili bir araçtır. Bunun için farklı cache türleri mevcuttur ve bunlar farklı kullanım alanlarına sahip olabilirler. Cache türleri arasında page caching ve data caching en sık kullanılanlarıdır.

Sayfa hızı optimizasyonu için cache kullanımının en sık tercih edilen yöntemi page caching'dir. Bu yöntem sayfanın tamamını cache eder ve tekrar yüklenmesi gerekmediği sürece cache kullanır. Bu sayede sayfa yükleme hızı artar ve sunucu yükü azalır.

Cache Dosyası Adı Cache Süresi İşlem
cacheIndex 3600 sayfa önbelleğe alınır ve 1 saat boyunca cache'den yüklenir

Data caching, genellikle veri tabanı sorgularının sonuçlarının cache edilmesi işlemidir. Böylece daha önce yapılmış ve sorgulanmış bir sorgu sonucu hafızada tutulur ve tekrar yapılmak zorunda kalmaz. Data caching, farklı veri kaynakları için farklı yöntemler içerebilir. Örneğin, file caching, memory caching, ve database caching gibi farklı teknikler kullanılabilmektedir.

Cache kullanımı, sayfa yükleme zamanını düşürerek kullanıcı deneyimini arttırmaya yardımcı olur. Yii Framework'te cache kullanımı oldukça kolaydır ve her türlü proje için uygulanabilir.


Page Caching

Yii Framework'te sayfa hızı optimizasyonu önemlidir. Bunun için de caching işlemi kullanılabilir. Page caching, sayfanın işlenmesi sonucu oluşan HTML çıktısının, belirli bir süre cache edilerek ilerideki isteklerde aynı HTML çıktısı tekrar üretilmeden kullanılmasına olanak tanır. Bu sayede server'ın yeniden aynı işlemleri gerçekleştirmesi engellenir ve sayfa yükleme hızı artar.

Yii Framework'te page caching işlemi Cache bileseni ile gerçekleştirilir. Cache bileseni, belirli bir önbellekleme süresi süresi belirterek, verilen anahtara digital bir veri eklenmesi, silinmesi veya güncellenmesi işlemi yapar.

Page caching, sayfanın sabit kısımlarında kullanılması tavsiye edilir. Dinamik içeriğe sahip sayfalar ya da sayfaların bölümleri için başka bir önbellekleme yöntemi olan Page Fragment Caching kullanılabilir.


Örnek: Page Caching Uygulaması

Yii Framework'te caching kullanımı oldukça önemlidir. Sayfa hızını arttırmak ve performansı yükseltmek için caching'in doğru kullanımı büyük önem taşır. Bunun için farklı caching türleri kullanılabilir. Bunlardan biri de Page Caching'dir.

Page Caching, belirli bir sayfanın cache işlemi yapılarak hızının nasıl arttırılabileceği örneğidir. Öncelikle, belirli bir sayfanın cache işlemine alınması için Yii Framework'te COutputCache bileşeni kullanılır. Bu bileşen, belirli bir sayfayı cacheleyerek tekrarlanan istekler için hızlı yanıt verebilir. Ardından, cache süresi belirtilerek cache süresi dolduğunda yeniden cache işlemi yapılabilir.

Aşağıdaki örnekte, bir sayfa cache işlemine alınarak hızı nasıl arttırılabilir gösterilmiştir:

  • Öncelikle, Yii Framework projesi içerisindeki main.php dosyasında Caching bileşeninin konfigürasyonu yapılmalıdır.
  • Bir Controller sınıfı üzerinde COutputCache kullanılarak cache'lenmesi istenilen sayfa belirlenir.
  • Cache işlemi başlatıldığında, belirli bir süre boyunca cache işlemi devam eder.
  • Süre dolduğunda, cache'in yeniden oluşturulması istenirse cache işlemi tekrarlanır.

Bu örnek sayesinde belirli bir sayfanın cache işlemi yapılarak hızının nasıl arttırılabileceği konusu örnek bir senaryo ile anlatılmıştır. Yii Framework'te caching doğru bir şekilde kullanıldığında, sayfa hızı arttırılabilir ve performans yükseltilebilir.


Page Fragment Caching

Page Fragment Caching, belirli bir sayfanın belirli bölümlerinin cache edilerek hızının arttırılmasını sağlayan bir caching yöntemidir. Bu yöntem, sayfa tamamen oluşturulduktan sonra belli bir öğenin dinamik olarak oluşturulmasından önce belirtilen süre boyunca önbelleğe alınır. Eğer sonraki kullanıcının isteği aynı sayfa için olursa, bu belirli öğeyi tekrar işleme ihtiyacı doğmadan önbellekten hızla alacak ve sayfanın yüklenmesi hızlanacaktır.

Page Fragment Caching, kullanıcıların sık sık eriştiği ancak veritabanı işlemleri veya diğer dinamik işlemler nedeniyle yavaş yüklenen bir sayfa öğesi için idealdir. Bu yöntem bölümler halinde çalıştığından, sayfa yüklenmesindeki diğer dinamik öğeleri etkilemez ve bu yolla sayfa hızında önemli bir artış sağlar. Örneğin, bir etkinlik takvimi sayfasını ele alalım. Bu sayfada, etkinliklerin tarihleri, saatleri, lokasyonları ve daha birçok bilgi bulunur. Sadece belirli bir ay veya hafta için etkinlikleri göstermek istediğimizi varsayarsak, veritabanından bu bilgileri çekmek zorunda kalabiliriz. Ancak, etkinliklerin sadece belirli bir bölümünün değiştiğini varsayarsak - örneğin, katılım için kayıt yaptırmak isteyen kullanıcıların sayısı, zaman çizelgesi veya ücret - bu bölümü önbelleğe almak yararlı olabilir. Sonuç olarak, sayfa hızı önemli ölçüde artar ve kullanıcılar tarafından daha hızlı erişilebilir hale gelir.


Data Caching

Yii Framework'te hızlı bir şekilde veri erişimini sağlamak için farklı data caching türleri kullanılabilir. Bunlar, database, file ve memcache gibi farklı veri kaynaklarına erişimi gerektirirler. Bu farklı türler, birbirlerine göre avantajları ve dezavantajları ile ayrılırlar.

Database caching, verilerin bir önbellek olarak kaydedilmesine ve ön bellekten geri alınmasına dayanır. Bu, verilerin tekrar tekrar oluşturulmasını veya yeniden hesaplanmasını gerektiren sayfaların hızla erişilebilmesini sağlar. Yii Framework'te database caching kullanıldığında, belirli bir veritabanı tablosu en çok kullanılan verilerin tutulması için kullanılabilir.

File caching, verilerin diskte bir dosyada saklandığı bir caching türüdür. Bu, verilerin hızlı bir şekilde erişilmesini sağlar ve erişim hızı, kullanılan dosya sisteminden de etkilenebilir. Yii Framework'te file caching kullanılması durumunda, bir dosya yolu belirtilir ve bu yol cache dosyalarının saklandığı yolu temsil eder.

Memcache caching, verilerin ana belleğe yazıldığı hızlı ve ölçeklenebilir bir caching türüdür. Bu, verilerin çok hızlı bir şekilde saklanmasını ve geri alınmasını sağlar ve özellikle yüksek trafikli web siteleri veya uygulamalar için idealdir. Yii Framework'te memcache caching kullanılması durumunda, host ve port gibi temel parametrelerin yanı sıra, belirli bir anahtarın saklanması ve yeniden alınması için kullanılacak yöntemler de tanımlanabilir.

Veri caching, hızlı veri erişimi için çok faydalı olabilir. Ancak, hangi caching türünün kullanılacağı, web sitesinin ihtiyaçlarına göre belirlenmelidir. Yii Framework'te kullanılan caching türleri karmaşık olabilir, ancak doğru kullanıldığında, verimlilikte büyük bir artış sağlayabilirler.


Caching Örneği

Yii Framework'te cache sisteminin kullanımı oldukça kolaydır. Cache kullanarak sayfa hızını optimize etmek, tekrarlanan veritabanı sorgularını azaltmak ve sayfa yüklemelerini hızlandırmak mümkündür.

Caching örneği ile ilgili olarak, bir örneği sizlerle paylaşmak istiyoruz. Örneğimizde, sayfa fragment caching kullanarak belirli bir sayfa bölümünün cache edilmesi ve sayfa yüklemelerinin hızlandırılması işlemi gerçekleştireceğiz.

Cache işleminin yapılabilmesi için uygulamamızda ilk olarak cache bileşenini tanımlamalıyız. Bunun için uygulamanın "config" klasörü içinde yer alan "main.php" dosyasına gitmeliyiz. Aşağıdaki kodu "components" bölümüne ekleyerek, cache bileşenini uygulamamıza dahil etmiş olacağız.

return array( 'components'=>array( 'cache'=>array( 'class'=>'system.caching.CFileCache', ), ), );

Uygulamamızda cache bileşenini tanımladıktan sonra, cache'in kullanımına örnek vermek için bir controller dosyası oluşturalım. Bu controller üzerinden, cache kullanarak sayfa fragmentlerinin depolanması ve kullanılması işlemini gerçekleştireceğiz.

İlk olarak controller dosyamıza "beforeAction" fonksiyonunu ekleyerek, sayfa fragmentlarının cache'den alınmasını işlemine başlayabiliriz. Aşağıdaki kod parçasında, kullanacağımız cache instance'ının "start" metodu ile cache işleminin başlatıldığını görebilirsiniz.

public function beforeAction($action){  if(parent::beforeAction($action))  {    if(Yii::app()->cache!==null && $content=Yii::app()->cache->get($this->id))    {      $this->renderContent($content);      return false;    }    return true;  }  else  return false;}

Cache içerisinde saklanan veriyi kullanmak için ise "afterAction" metodu içindeki kod parçacığı kullanılabilir. Aşağıdaki kod parçası, cache'e veri saklamak amacıyla kullanılır ve içerisinde saklanacak olan veri, "getRenderedContent" metodu aracılığıyla alınır.

public function afterAction($action){  if(parent::beforeAction($action))  {    if(Yii::app()->cache!==null && $this->getUniqueId()!=='' && $this->id!==null)    {      Yii::app()->cache->set($this->getUniqueId(), $this->getRenderedContent());    }    return true;  }  else  {    return false;  }}

Örnek uygulamamızda, bir sayfa içerisinde yer alan ve çeşitli uzun işlemleri gerektiren bir form işlemindeki sonuçların cache içerisinde saklanarak, ileri ki sayfa yüklemelerinde bu verilerin tekrarlanmasının önüne geçebilirsiniz. Bu sayede sayfa hızınızı optimize etmiş olursunuz. Yii Framework'ün sunduğu cache mekanizmasını doğru kullanarak, uygulama hızınızı yükseltebilir ve sayfa yüklemelerinde kullanıcı deneyimini arttırabilirsiniz.


Cache Cleaning

Yii Framework, sayfa hızını optimize etmek için caching yöntemlerini kullanmaktadır. Ancak, cache kullanımı bazen sorunlara yol açabilir, özellikle cache'in bir süre sonra eski verileri tutması durumunda. Bu nedenle, Yii Framework cache temizleme işlevleri sunmaktadır.

Cache temizleme işlemi, cache'in sakladığı verileri güncellemek ya da tamamen temizlemek için kullanılan bir yöntemdir. Yii Framework'te cache temizleme, önceden tanımlanmış bir küme ya da belirli bir key ile birlikte yapılabilir.

Örneğin, bir kullanıcının profil verileri değiştirildiğinde, cache temizleme işlemi yapılabilir. Kullanıcının profil sayfası, daha önce cache'de tutulduysa, eski veriler tutulmaya devam eder ve güncel veriler gösterilmez. Bu nedenle, cache temizleme işlemi kullanıcının profil verilerinin güncellenmesini sağlamak için yapılabilir.

Yii Framework'te cache temizleme işlemi için özel bir komut seti mevcuttur. Bu komutlar, uygulama koddan da çağrılabilir. Yii Framework'te cache temizleme işlemi, belirli bir key ya da cache kümesi için yapılabilir.

  • Cache temizleme işlemi için öncelikle targetObject adı verilen cache target (hedef nesne) tanımlanır. Target cache yerini belirlemek için kullanılabilir.
  • Target Object'in yanı sıra, cache temizleme işlemi için belirli bir tag ya da key de belirtilmelidir.
  • Cache temizleme işlemi, ilgili targetObject ve key/tag ikilisi kullanılarak gerçekleştirilir.

Genellikle cache temizleme işlemi, Yii Framework uygulama kendi içinde belirli aralıklarla veya belirli olaylar gerçekleştirmesi sonrasında otomatik olarak yapılır. Ancak, zaman zaman manüel cache temizleme işlemi de yapmanız gerekebilir. Bu durumda, Yii Framework'in sağladığı komut seti kullanılarak cache temizleme işlemi yapılabilir.


Cache Dependency ve Tagging

Cache dependency ve tagging, Yii Framework'teki caching işlemleri için önemli bir konudur. Cache dependency, cache'in yenilenmesi gerektiğinde bağımlı olduğu kaynakları belirlemek için kullanılır. Örneğin, bir sayfanın cache'i, veritabanındaki bir kaydın değiştirilmesiyle otomatik olarak yenilenebilir.

Yii Framework'te, cache dependency için CCacheDependency sınıfı kullanılır. Bu sınıf, belirtilen bir kaynağın değişmesi durumunda cache'in yenilenmesini sağlar. Örneğin, CDbCacheDependency sınıfı, cache'in database'e bağımlı olduğunu belirtmek için kullanılır.

Cache tagging ise cache'de gruplama yapmak için kullanılır. Örneğin, tüm ürünlerin cache'inde bir değişiklik olduğunda, sadece bu tag'e sahip cache'ler yenilenir. Yii Framework'te, CTagDependency sınıfı, cache tagging işlemleri için kullanılır.

Cache dependency ve tagging, cache performansını artırırken aynı zamanda cache'in yönetimini de kolaylaştırır. Cachede bulunan verilerin otomatik olarak yenilenmesi, geliştiricilere zaman kazandırırken, cache tagging sayesinde, özellikle büyük projelerde cache temizleme işlemi daha efektif hale getirebilir.

Yii Framework'te, cache dependency ve tagging kullanımı oldukça kolaydır ve birkaç kod satırıyla uygulanabilir. Özellikle e-ticaret gibi dinamik bir web sitesine sahipseniz, caching konusuna önem vermek ve cache dependency ve tagging gibi yöntemleri kullanmak daha hızlı ve stabil bir web sitesi oluşturmanıza yardımcı olabilir.