Classic ASP Cache (Önbellek) Sistemi

İşin aslı daha geçen güne kadar cachelemeye ihtiyaç duymuyordum. Bazen yaptığım sitelere aynı anda Aziz Uğur sayesinde 5b kişi online oluyordu çöküyordu ama önbellek yapmak itici geliyordu fakat birkaç gün öncesine kadar gene 5bine yakın online oldu ve başta MySQL olmak üzere IIS ile beraber çöktü buna bir çare bulmalıyım dedim ve araştırdım. ASP ile yazılmış adam gibi çalışan ihtiyacımı tam karşılayan bir cache sistemi bulamadım ve oturup kendim yazmaya başladım ve yazdım. Madem böyle bir sistem yazdım paylaşayım başkaları da (ki ASP ile yapılan bedava bir şey bulmak çok zor. Hatta bişey bulmak çok zor :)) neden yararlanmasın dedim.

Nasıl İşler?

Sistemin işleyişini özet geçeyim. Mesela Eticaret yapıyorsunuz ve günde en az bir kez ürün veya kategori güncelliyorsunuz. Ziyaretçi bir ürüne giriyor arkada server tabanlı birçok işlem gerçekleşiyor (kdv hesapla resimleri veritabanından çek parse et göster vs.) ama bunu birkere yapsa ve diğer kullanıcılara da bunu gösterse ne kadar güzel olur değil mi? İşte tam ihtiyacınız olan şey önbellekleme. Yazdığım sistem ilk önce çıktısını verdiği sayfanın html kodlarını alarak bir dosyaya veya serverın ramine (Application) kaydeder daha sonraki girişlerde mySQL e veya diğer işlem yaptığınız nesnelere sormadan direk gösterir.

Nasıl Kullanılır?

Buradan İndirireceğiniz Cache dosyasını sisteminize include ediyorsunuz.

Dosyaya önbellek almak istiyorsanız. Sitenizin sürekli çalışan bir dosyasında veya global.asa dosyasına CacheKlasor adında bir değişken tanımlamalısınız. Örnek:

Daha sonra classı kullanarak cache ayarlarını yazıyorsunuz.

Komutların açıklamaları:

OnBellekZaman : Alacağı önbellek zaman bitimi türü. 3 değer alabilir.

1. CI_GUN

2. CI_SAAT

3. CI_DAKIKA

OnBellekAralik : Seçtiğiniz önbellek zaman aralığından ne kadar sonra tekrar önbellekleyeceği. Sadece integer değer alabilir Örn: 2

DosyaAdi : Bu değeri atarsanız sistemin otomatik cache adı devre dışı bırakılır ve belirteceğiniz değer atanır. Değer String verilmelidir.

Dosya : Önbelleklemeyi belirttiğiniz klasöre html (veya istediğiniz bir uzantı ile) alır.

Bellek : Önbelleklemeyi Serverin RAMine (Application) alır. Daha hızlıdır.

Class aynı zamanda Self URL i destekleyecek şekilde yaptım.

Cachelemeyi QueryString‘den komut göndererek sıfırlayabilir veya önbelleklemeyi atlayabilirsiniz. Classın QuertString den alacağı değerler:

temizle : Komutun verildiği sayfanın önbelleğini temizler.

htemizle : Alınmış bütün cachelemeyi temizler

gec : Önbellekleme yapılmadan sayfa açılır.

olustur : Önbellek eğer varsa siler ve tekrar oluşturur.

komut örnek: http://ornek.com/hakkimizda?cache=temizle olarak verilir. Komutları dosya üzerinden değiştirebilirsiniz.

İndirmek için: http://code.google.com/p/asp-cache/downloads/list adresini kullanabilirsiniz.

Sistemin Çalıştığını Test Etmek istiyorsanız yeni bir sayfa açın ve  aşağıdaki kodu kopyalayın

Not: Ben tüm projelerimde utf-8 karakter kodlaması kullanıyorum o yüzden Türkçe karakter sorunu yaşayanlar için dosyayı not defter ile açıp dosyadan farklı kaydet i tıklayarak Kodlama yı “ANSI” olarak değiştirip kaydederse sorun çıkmaz.

 

Not2: Eğer self-url kullanıyorsanız execute yapan dosyanın adı 404.asp değil ise objCache.asp dosyasının açıp 176. satırdaki 404.asp yerine kullandığınız dosyanın adını yazmalısınız.

“Classic ASP Cache (Önbellek) Sistemi” üzerine 28 yorum

  1. kardeş teşekkür ederim bilgi için.verdiğin kodları uyguladım güzel çalışıyor görünüyor .sayfayı ilk açtığımda gerçek görüntüsü geliyor ikinci kez açtığımda bellekteki veriyi okuyor fakat bellekten okuduğu verilerde türkçe karakterler yok.bozuk çıkıyor.nasıl düzeltiriz fikrin varmı

    1. Ben bütün projelerimde UTF-8 kullanıyorum. Sizin kullandığınız character seti farklı olabilir sorunda burdan kaynaklı olabilir. Hangi character setini kullanıyorsunuz? veya bir örnek varsa bana yollayın çözüm bulalım.

  2. Windows-1254 charseti kullanıyorum türkçe karakter sorunu oluyor ama sadece 1 yerde oluyor bu sorun.

  3. Öncelikle kodlar için teşekkürler fakat kafama takılan bir şey var Belleğe kaydetmek daha mantıklı daha hızlı ama böyle yaptığımız zaman Server’in belleğinde yada CPU’sunda bir şişme meydana gelirmi bu yüzden hosting firmasından suspend yermiyiz ?

    1. aslında o belleği fazla doldurmaması için yapmanız gerekiyor. Sonuçta burada tek sorgu çalışıyor ama önbellekleme yapmayınca birçok sorgu çalışıyor. Bunun belleğe attığı çok küçük bir miktar zaten sadece html kodlarını kaydediyor. Ama böyle bir sorun çıkarsa dosya ile önbelleklemeyi deneyebilirsiniz.

  4. Hocam elinize saglik kac senedir böyle bisey aklimdaydi , bi arama yapayim dedim googlede sonunda birisi yazmis , fakat ben tam emin olamadim söyleki ver 1.2 dosyasini indirdim sayfamin en üstüne include ettim ve tek tirnaklari kaldirdim DOSYA haric ramden deneme yapiyorum sitede bir sorun yok fakat hizda da fark göremedim acaba kod isliyor mu calisiyor mu nasil emin olabilirim yanlis bisey yaptim mi diye server a da giris yapabilirim ne sekilde analarim isledigini ?

  5. türkçe karakter sorunu yaşayan arkadaşlar sayfanın en üstüne bu kodu ekleyiniz.

    < %@ language="vbscript" codepage="1254" lcid="1055"%>
    < % response.charset = "windows-1254" response.charset = "iso-8859-9" %>

  6. Çalışma için teşekkür ederim. Benim yapmak istediğim şeyi yapmışınız. Ama TR karakter sorunu yaşıyorum. Birde üyelikli sitelerde login sorunu yaşıyorum giriş yaptığım halde giriş yapmamış görünüyorum. Sürekli resetlemem gerekiyor o zamanda bir işe yaramıyor.

    1. Üye girişli bir site için farklı yöntemler denemelisin. Yanlız buda her sayfa için her üye için farklı cache anlamına gelir çok mantıksız olur.

      Böyle bir durum için üyelik bilgilerini ajax ile çekip koymak daha mantıklıdır Yada üye girişi yapınca önbelleklemeyi iptal edebilirsiniz

  7. Fatih eline sağlık kardeşim. Güzel bir yazı olmuş. Ama şu Türkçe karakter sorununu ne yaptımsa çözemedim. Sen çözecek olursa bize bildir de uygulayalım 🙂 Sevgiler…

  8. kendi sitemde denedim gerçekten çok iyi performans veriyor . İyi bir performans için bende size tavsiye sadece cok fazla ziyaret alan ve fazla değişiklik olmayan yerlerde kullanın… Ayrıca Fatih AYTEKİN arkadaşım bu çalışmadan dolayı çok teşekkürler.

  9. Öncelikle elinize sağlık çok güzel bir sistem, ancak kullanmaya çalıştığımda;

    Microsoft VBScript runtime error ‘800a0046’
    Permission denied
    /objCache.asp, line 379

    hatası veriyor. Klasörün yazma izni var, zaten belli bir süre problem çıkarmıyor ancak 350-400 sayfa olduktan sonra bu hatayı veriyor. Neden olabilir acaba?

  10. Belki hiç asp site açmıcam ama güzel ve önemli bir şey yapmışsın.Seo faktoru için sitenin hızlı açılması önemli.Onun için cachede önemli . +1

  11. tum soyledıklerınız eksiksiz yapmama ragmen cache edemıyor
    yazma ızınlerı sorunsuz olmasına ragmen

    <%

  12. Global.asp dosyasına Application(“CacheKlasoru”) = “D:\inetpub\xxxx.com\www\CacheKlasoru” olarak ekledim, aynı klasör isminde klasör açtım ve izinlerini verdim. Fakat hiçbir şey olmadı neyi atlamışolabilirim fikriniz var mı

  13. Merhaba,

    Kod için teşekkürler, statik siteler için işe yarıyor ama e-ticaret gibi sitelerde örnek olarak sayfaların yuıkarısında Hoşgeldiniz XXX kısımları patlıyor. Cache den aldığı dosya da haliyle o bilgi olmadığı için müşteri giriş yapsa da patlıyor yapı. Onun dışında gayet güzel bir sistem teşekkürler.

  14. Merhaba Fatih hocam.
    Sizden yardım isteyecektim.
    Verdiğin dosya ve ayarların hepsini yaptım. http://www.site.com şeklinde yani default.asp’de çalıştırdım cache yapmayı.
    Fakat 404.asp ile Self URL bir türlü çalıştıramadım.

    Sizinle anlık iletişim kurabileceğim bir uygulama var mıdır acaba?
    Şimdiden çok teşekkür ederim.

    404.asp dosyamın içi şu şekilde:

Bir Cevap Yazın

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