Asp.Net Cache nedir, neden ve nasıl silinir? 2 yorum


Bilgisayarınız internette gezinirken girdiğiniz sitelerde bulunan bazı resimler butonlar ve buna benzer programcıklar otomatik olarak geçici bir klasöre kayıt eder. Bu işleme “cachelemek” denir. Bu işlem siteye tekrar girmeniz halinde bilgisayarınızda mevcut olanları tekrar tekrar yükleyerek zaman kaybetmenizi önlemek için yapılır. Kimi zaman bu dosyalar eksik yada bozuk şekilde bilgisayarınızda duruyor olabilir. Bu durumda sayfayı düzgün göremez ya da programları çalıştıramazsınız. Bu tip durumlarda bilgisayarınızda bulunan cache’leri temizlemeniz gerekir. Bunu temizlemek için şu adımları gerçekleştirmelisiniz.

Ayarlar-> Gelişmiş Ayarları Göster -> İçerik -> İçerik ayarları -> Tüm Çerezler ve Site Verileri

Karşınıza çıkan yerel olarak depolanan veriler sizin bilgisayarınızda bulunan cache’lerdir. Tümünü kaldır dediğiniz vakit bilgisayarınızda bulunan bütün cache dosyalarını temizlemiş olacaksınız. Bu işlemden sonra ilk kez girdiğiniz sayfalar biraz daha geç açılacaktır.
Sayfadaki çoğu veriler veri tabanından geliyor. Birde bunlar HTML’e render ediliyor. Render edilmesi ayrı bir süre veritabanından verinin çekilmesi ayrı bir süre tüm bunları birleştirince bir sitenin açılması yaklaşık 1 yada 1.5 dakika sürer. Bu yüzden biz bu sayfayı cache’ leyerek bu süeyi kısaltabiliriz. Sonuçta anasayfa 24 saat boyunca aynı kalacağı için cachelenmesi daha uygudur. Sonuçta bir sitenin anasayfası herkes için aynıdır. Biz bu sayfayı ram’e atarsak bu sayfayı her seferinde veritabanından almaya gitmeyecek de ramden bize getirecek . Bu sayede site daha hızlı bizi karşılıyor olacaktır. Herkes site yazar ve herkesin sitesi hızlı olmaz işte sizin sitenizi öne çıkartacak olan şeyde budur.
Cache ‘ i ikiye ayırabiliriz

1.HTML Cache: Html cache client tarafında yapılan bir cache’lemedir. Bu cache’lemeyi render edeceğiz ve sürekli olarak sayfayı veri tabanına göndermeyeceğiz ve ram’den işlem yaptıracağız.
2. Data Cache: Data cache de veri tabanında yapılan cache’lemedir. Veri tabanından gelen veriyi ram’e atayıp ram’den verileri çekeceğiz.

Cache’lemeyi şu şekilde özetleyebiliriz.

cache

Cache’leme yaparken dikkat edeceğimiz bazı hususlar vardır. Mesela sürekli değişen bir veri cache’lemeye tabi tutulamaz. Sabit veriyi cache’leyebiliriz aksi takdirde yanlış veriyi gönderebiliriz. Örneğin HaberId değeri 5 olan haberin bilgilerini her defasından veri tabanından getirip ekranda göstermeye çalışsak ve bu haberin ortalama günde 500 defa okunduğunu varsayarsak sadece bir haberin bilgilerini 500 defa veri tabanından getirmenin pojemizin performansını çok kötü etkileceği kesindir. İşte bu yüzden output cache kullanmak yararımıza olacaktır.
Bu olayı şu şekilde canlandırabiliriz. Kullanıcı bir sayfaya istekte bulundu. Sayfa içinde görüntülenecek olan bilgiler veri tabanından geldi. Ardından bu web sayfamız HTML sayfamızı oluşturdu yani render edildi. O yüzden tüm asp.net sayfaları client’e gitmeden önce html’e dönüştürülür,render edilir. Biliyorsunuz ki asp.net kodları bizim karşımıza HTML şeklinde çıkıyor biz bu olaya render diyoruz. Son olarak da HTML kodlarıyla sayfamız bize göründü.
İşte bu işlemin bir sürü kullanıcının da yaptığını düşünürsek veri tabanımız bunu kaldırmaz ve projeniz patlar. Eğer ben veri tabanından bilgileri alıp,sayfaya aktarıp,html’e çevirdikten sonra oluşan bu html kodlarını belleğin bir yerinde saklarsam bir sonraki aynı şeyi talep ettiğinde bu HTML kodlarını doğrudan gönderirsem sayfamın performansını çok etkilemiş olurum değil mi?

* İşte bu yüzden devreye OUTPUT CACHE giriyor. Sayfanın tamamına yapılan bir cache’lemedir. Cachelemede belli bir süre verilir ve bu süre içinde yapılan ilk istek hariçindeki diğer tüm isteklerde ramden çağırma yapılır.(yani cache’den döndürülür.)

* Eğer sayfamızın belli bir kısmı sürekli değişip belli bir kısmı sabit kalıyorsa sabit kısmını da cache’lersem büyük bir performans elde etmiş olurum. Buna biz FRAGMENT CACHING diyoruz.

* Bir diğer cacheleme yöntemi ise CONTROL CACHING’dir. Bir Asp.net’in durumlarına göre yapılan cache’lemedir. Kontrolün a durmu için sayfa belirlenen bir süre cache’lenirken b durumu için cache’lenmemiştir. Tüm durumlar için ayrı ayrı cache’lenebilir. Kısa bir uygulama yapalım şimdi. Bir asp.net sayfasına aşağıdaki gibi bir uygulama yapalım.

9009010320152019309009

Code behind kısmına şu şekilde kodumuzu yazalım

2196010320152020282196

Projemızı şimdi çalıştırıp sayfaya her tıklamada bakın süreniz nasıl değişiyor. Şimdi ben sayfayı cacheleyeceğim.

2763010320152021042763

Yaptığım sadece bu kodu yazmak oldu ve bakın şimdi sayfanız 10 saniye boyuncahiç bir değişiklik olmayacak.

<%@OutputCache Duration=”10″ Location=”Any” VaryByParam=”none” %>

Bu satırdaki kodumuzu açıklayalım
Duration=”10″ = Burada sayfanın kaç saniye önbellekte kalacağını belirttik. ben 10 saniye kalmasını istedim. İstediğiniz değeri verebilirsiniz.
Location=”Any” = Burada önbelleklemenin nerede yapılacağını belirtiyoruz. Any : Client , Proxy Server veya Server üzerinde demek.
VaryByParam=”none” = Burada none diyerek sayfamızın tamamını önbelleklemeye aldık.

Fragmentation cache ise user kontrollerle sayfanın belli bir kısmını cache’leyebiliriz. Burada dikkate almanız gereken şey şudur:

5284010320152022125284

Şimdi de datacache olayına değinelim. Görsel olarak daha iyi anlayacağınızı umarak şu resimden inceleme yapalım.

2048010320152023172048

* Kesin zaman:Belirli bir süre verilir ve bu süre içinde sayfada bir değişiklik olmaz

* Kayan zaman: Belirli bir süre verilir fakat her giren kullanıcı sayfanın cache süresi dolmadan girerse bu zaman kayar. Sayfanın cache süresi 1 dk ise 50. snde sayfaya bir istekte bulunursa tekrar cache süresi 1 dk kaymış olur.

* Değişikliğe bağlı zaman: Store procedure kullanarak veritabanındaki değişikliği izler eğer değişiklik yapılmışsa sadece bir kolona bakıp sayfayı cache’lemeye gidilir.

Bunun için öncelikle Developer Command Prompt’u yönetici olarak çalıştırmalısınız ve şu kodları yazmalısınız.

2909010320152025012909

Buradaki ifadeleri açıklayalım
-S “.” => Server=.
-d “Northwind” => Database=Northwind
-U “sa” => uid=sa
-P “123” => pwd=123
-t “Categories” => Categories tablosu cachelendi
-ed -et => biri database biri tablo demek

Aşağıdaki resimler DataCache örneğinin açıklamasıdır.

7350010320152025417350

 

3602010320152026023602

6300010320152026266300

Datacache örneğimiz de bitmiştir.Şimdi sıra sizde. Başarılar dilerim.
Bir dahaki yazımızda görüşmek üzere..


Bir yorum ekleyin

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

2 yorum “Asp.Net Cache nedir, neden ve nasıl silinir?