ASP.NET Caching (1)

ကိုယ့်ရဲ့ web site တွေမြန်ဆန်ဖို့အတွက် ပြုလုပ်သင့်တဲ့ အချက်တွေထဲမှာ cache ဆိုတဲ့ နည်းလမ်းလည်း ပါပါတယ်။ classic asp တုန်းက caching လုပ်ဖို့အတွက် ကန့်သက်ချက်ဘောင်တွေ ရှိနေပေမယ့် အခု Asp.net 2.0/3.5 ရောက်လာတဲ့အချိန်ကျတော့ caching method တွေ တော်တော်များများ ပါလာပါတယ်။

ASP.NET မှာ caching လုပ်ဖို့အတွက် နည်းလမ်း နှစ်ခုရှိပါတယ်။ directive တွေ ကြေငြာပြီးတော့ declarative လုပ်တဲ့နည်းရယ်၊ VB.NET, C# အစရှိတဲ့ .net language သုံးပြီးတော့ ရေးတဲ့နည်းရယ်။ directive တွေကြေငြာပြီးရေးတဲ့နည်းကတော့ လူသုံးအများဆုံးတဲ့ အရမ်း လွယ်ကူတဲ့ နည်းပါ။

Visual studio 2005/2008 ကိုဖွင့်ပြီးတော့ New Website ကိုယူလိုက်ပါ။ ပြီးရင်တော့ Design, Split, Source ၃ခုထဲက Source ကို ရွေးလိုက်ပါ။ html view ထဲရောက်သွားပြီးရင်တော့ အပထမဆုံးတစ်ကြောင်း

<%@ Page Language="VB" AutoEventWireup="false"….)

အဲဒီရဲ့အောက်မှာ

<%@ OutputCache Duration ="10" VaryByParam ="None"  %>

လို့ရေးလိုက်ပါ။ OutputCache directive ကိုသုံးပြီးတော့ ကိုယ့်ရဲ့ page ကို cache လုပ်မယလို့ ပြောလိုက်တာပါ။ cache လုပ်ထားမယ့် ကြာချိန်ကတော့ 10 စက္ကန့်အတွင်းပါ။ VaryByParam=”None” ဆိုတာကတော့ page တစ်ခုလုံးကို filter မရှိပဲနဲ့ cache လုပ်မယ်လို့ ပြောတာပါ။ အပေါ်ကအဆင့်တွေပြီးရင်တော့ cache တကယ် အလုပ် လုပ်၊မလုပ် စမ်းကြည့်ဖို့အတွက် လက်ရှိအချိန်ကိုပြတဲ့ code တစ်ကြောင်းရေးကြည့်ပါမယ်။ Page Load event မှာ

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
              Response.Write(Now)
End Sub

Page ကို တစ်ကြိမ် Refresh လုပ်တိုင်း လက်ရှိရောက်နေတဲ့အချိန်ကိုပြပေးမယ့် code ပါ။

တကယ်လို့များ OutputCache directive မထည့်ထားဘူးဆိုရင် page ကို တစ်ကြိမ် refresh လုပ်တိုင်း စက္ကန့်နဲ့အမျှ အချိန်ကိုပြောင်းလဲပြီးပြနေမှာပါ။ OutputCache directive ထည့်ထားခဲ့မယ်ဆိုရင်တော့ duration 10 စက္ကန့်စာ cache လုပ်ထားမှာဖြစ်တဲ့အတွက် web server ကို ၁၀ စက္ကန့်အတွင်း request ပြန်မလုပ်ပဲ cache လုပ်ထားတဲ့ အချိန်ကိုသာ ပြန်ပြပေးမှာဖြစ်ပါတယ်။

Query String တွေပေါ်မူတည်ပြီးတော့ မတူညီတဲ့ cache version တွေကိုစမ်းကြည့်ကြရအောင်။ ဒီတစ်ခါ

<%@ OutputCache Duration ="10" VaryByParam ="cat"  %>

Duration ကို ၃၀ ပြန်လိုက်တဲ့အတွက် cache လုပ်ထားမယ့်အချိန်ဟာ စက္ကန့် ၃၀ ကြာပါမယ်။ VaryByParam=”cat” လို့ရေးထားတဲ့အတွက် ကိုယ့်ရဲ ့ cache ဟာ Query String cat အပေါ်မှာ မူတည်သွားပါပြီ။ တကယ်လို့ ဥပမာအနေနဲ့ ဆိုရင်

http://localhost:49162/WebSite14/Default2.aspx?cat=1

အဲဒီမှာ query string က cat=1 ပါ။ cat=1 အတွက် cache ကို စက္ကန့် ၃၀ စာ သိမ်းထားပါမယ်။ တကယ်လို့ ဒီလိုပြင်ရေးလိုက်မယ်ဆိုရင်

http://localhost:49162/WebSite14/Default2.aspx?cat=2

query string က cat=2 ဖြစ်သွားတဲ့အတွက် cat=2 အတွက် စက္ကန့် ၃၀ စာ cache လုပ်ထားပေးပါလိမ့်မယ်။

VaryByParam ဆိုတာ တကယ်တော့ query string အလိုက်ပဲ cache လုပ်တာတော့မဟုတ်ပါဘူး။ Asp.net control တွေပေါ်မှာလည်း အလုပ်လုပ်နိုင်ပါတယ်။

<%@ OutputCache Duration ="10" VaryByParam ="ddl1"  %>

VaryByParam=”ddl1” ဆိုတာကတော့ drop down list (ddl1) ရဲ့ တန်ဖိုးပေါ်မှာမူတည်ပြီးတော့ မတူညီတဲ့ cache version တွေ အလုပ်လုပ်ပါလိမ့်မယ်။ ကိုယ့်ဟာကို စမ်းကြည့်ကြပါ။

တစ်ခြားစိတ်ဝင်စားဖို့ကောင်းတဲ့ cache version တွေလည်းရှိပါသေးတယ်။ VaryByHeader ရဲ့အလုပ်လုပ်ပုံကတော့ Http Header တွေပေါ်မှာမူတည်ပြီးတော့ cache တွေအလုပ်လုပ်တာပါ။ ဥပမာ အနေနဲ့ http header referer အလုပ်လုပ်ပုံလေးကို စမ်းကြည့်ပါ။

<%@ OutputCache Duration ="10" VaryByParam ="None" VaryByHeader ="Referer"  %>

Facebook comments:

Leave a comment


*