فردا روشن اسن به
آموزشASP.NET
صفحه نخست         تماس با مدیر         پست الکترونیک        RSS         ATOM
 
 

در این بخش بحث خود را در ارتباط با  output caching ادامه داده و بر روی  Custom Caching Control متمركز خواهیم شد.

Custom Caching Control
برای ذخیره چندین نسخه cache از یك صفحه تنها گزینه موجود استفاده از پارامترهای query string نمی باشد . ASP.NET به پیاده كنندگان برنامه های وب امكان ایجاد رویه هائی سفارشی را می دهد كه به كمك آنها می توان در خصوص caching یك نسخه جدید از یك صفحه و یا استفاده از نسخه موجود تصمیم گیری كرد .
كد نوشته شده در هر یك از رویه های فوق مناسب بودن اطلاعات را بررسی و یك رشته را برمی گرداند . در ادامه ، ASP.NET از رشته فوق برای پیاده سازی caching استفاده می نماید. در صورتی كه كد مورد نظر رشته مشابهی را برای درخواست های مختلف تولید نماید ، ASP.NET  از نسخه cache شده صفحه استفاده خواهد كرد و در صورتی كه كد فوق یك مقدار جدید را تولید نماید ، ASP.NET یك نسخه جدید cache را ایجاد و آن را بطور جداگانه ذخیره می نماید .
به عنوان نمونه فرض كنید قصد داریم نسخه های مختلفی از یك صفحه را بر اساس نوع مرورگر cache نمائیم . بدین منظور در ابتدا از دایركتیو OutputCache در ابتدای صفحاتی كه قصد caching آنها را داریم استفاده كرده و در ادامه از خصلت VaryByCustom برای مشخص كردن یك نام كه نوع caching سفارشی را مشخص می نماید ، استفاده می نمائیم .

با توجه به این كه قصد داریم صفحات بر اساس مرورگر كاربران cache نمائیم ، در نمونه كد زیر از نام  Browser استفاده شده است .

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

در ادامه نیاز داریم رویه ای را كه رشته سفارشی caching را تولید می نماید ، ایجاد نمائیم . رویه فوق می بایست در فایل پیكربندی global.asax و یا فایل code-behind مربوطه باشد .
كد زیر نحوه انجام این كار را نشان می دهد .

رویه ای برای ایجاد سفارشی چندین نسخه cache از یك صفحه

Function GetVaryByCustomString(ByVal context As HttpContext, ByVal arg As String) As String

 If arg = "Browser"
    Dim BrowserName As String
    BrowserName = Context.Request.Browser.Browser
    Return BrowserName
 Else
    Return MyBase.GetVaryByCustomString(context, arg)
 End If
End Function

 

تابع GetVaryByCustomString یك رشته با مقدار VaryByCustom را از طریق پارامتر arg دریافت می نماید . بدین ترتیب می توان برنامه ای را پیاده سازی نمود كه چندین نوع از caching سفارشی را صرفا" در یك تابع مشابه پیاده سازی نماید . هر نوع از یك  نام VaryByCustom مختلف استفاده می نماید ( نظیر Browser ، BrowserVersion و یا DayOfWeek ) . تابع فوق مقدار  VaryByCustom را از طریق آرگومان arg مشاهده و رشته caching مناسب را برمی گرداند . در صورتی كه رشته های caching برای درخواست های مختلف مطابقت نماید ، ASP.NET از نسخه cache شده صفحه استفاده می نماید. در غیر اینصورت ASP.NET برای هر رشته caching یك نسخه جداگانه را ایجاد ، ذخیره و cache می نماید .
دایركتیو OutputCache دارای یك خصلت سوم است كه از آن برای تعریف caching استفاده می گردد . خصلت فوق كه VaryByHeader نام دارد ، به شما اجازه می دهد كه نسخه هائی جداگانه از یك صفحه را بر اساس مقدار دریافتی یك  HTTP header  ذخیره نمائید . در این رابطه می توان صرفا" یك header و یا مجموعه ای header كه توسط semicolon از یكدیگر جدا شده اند را مشخص نمود . سایت های چند زبانی می توانند از روش فوق برای caching چندین نسخه از یك صفحه بر اساس زبان مرورگر سرویس گیرنده استفاده نمایند .
كد زیر نحوه استفاده از خصلت VaryByHeader را نشان می دهد .

 <%@ OutputCache Duration="20" VaryByParam="None" VaryByHeader="Accept-Language" %>

Fragment Caching
در برخی موارد ممكن است نتوان تمامی یك صفحه را cache نمود ولی همچنان اصرار داریم كه بخشی از صفحه را كه بندرت تغییر می یابد ( نظیر لیست كالاهای موجود ) و هزینه زیادی صرف ایجاد آن شده است را cache نمائیم . در چنین مواردی می توان از روش های متعددی نظیر data caching ( در بخش بعد این مقاله با روش استفاده از آنها آشنا خواهیم شد ) و fragment Caching استفاده كرد .
برای پیاده سازی fragment Caching می بایست برای بخشی از صفحه كه قصد caching آن را داریم یك كنترل كاربر را ایجاد و دایركتیو OutputCache را به آن اضافه كرد . بدین ترتیب علی رغم این كه صفحه cache  نخواهد شد ولی كنترل كاربر cache می گردد .
fragment Caching از لحاظ مفهومی مشابه caching یك صفحه است  و صرفا" دارای یك تفاوت اساسی است . در صورتی كه صفحه یك نسخه cache شده از یك كنترل كاربر را بازیابی نماید ، نمی تواند با آن و از طریق كد ارتباط برقرار نماید . به عنوان نمونه در صورتی كه كنترل كاربر خصلت هائی خاص را ارائه می نماید ، صفحه وب مورد نظر نمی تواند به این خصلت ها دستیابی و آنها را تغییر دهد . توجه داشته باشید ، زمانی كه از یك نسخه cache شده كنترل كاربر استفاده می گردد ، یك بلاك از تگ های Html درون صفحه قرار خواهند گرفت و در عمل شی كنترل كاربر در دسترس نخواهد بود . 
 

Cache Profiles
یكی از مسائل در ارتباط با output caching قرار دادن كد درون صفحه است ( در بخش   aspx markup . و یا در بخش كد كلاس ) . با این كه استفاده و پیكربندی خصلت های مرتبط با دایركتیو OutputCache در صفحات وب ساده تر بنظر می آید ولی این روش می تواند مسائل مدیریتی و پشتیبانی مختص به خود را نیز به دنبال داشته باشد (خصوصا"  اگر ده ها صفحه cache شده ایجاد شده باشد ) . به عنوان نمونه در صورتی كه قصد داشته باشیم تغییراتی را در خصوص caching تمامی صفحات فوق انجام دهیم ( مثلا" تغییر مدت زمان caching از 30 ثانیه به 60 ثانیه ) ، می بایست هر صفحه بطور جداگانه تغییر  و در ادامه نیز توسط ASP.NET مجددا" ترجمه گردند .   
در ASP.NET 2.0 با معرفی یك راهكار جدید این امكان در اختیار پیاده كنندگان گذاشته شده است تا بتوانند از تنظیمات caching مشابه برای گروهی از صفحات استفاده نمایند . به ویژگی فوق cache profile می گویند و به كمك آن می توان تنظیمات caching را در یك فایل web.config تعریف نمود . بدین ترتیب ، اعمال تغییرات صرفا" از طریق یك نقطه فراهم می گردد .
برای تعریف یك Cache Profile ، از تگ <add> در بخش <outputCacheProfiles> فایل web.config استفاده می گردد . به cache profile ایجاد شده یك نام و مدت زمان مناسب نسبت داده می شود . كد زیر نحوه انجام این كار را نشان می دهد .

تعریف یك cache profile در فایل web.config

<configuration>
   <system.web>
      <caching>
         <outputCacheSettings>
               <outputCacheProfiles>
                   <add name="ProductItemCacheProfile" duration="60" />
                </outputCacheProfiles>
          </outputCacheSettings>
     </caching>
...
   </system.web>
</configuration>

در ادامه می توان از پروفایل  فوق به كمك خصلت CacheProfile در یك صفحه استفاده نمود .

 <%@ OutputCache CacheProfile="ProductItemCacheProfile" VaryByParam="None" %>

در صورتی كه بخواهیم سایر جزئیات caching نظیر VaryByParam را نیز مشخص نمائیم می توان آن را به عنوان یك خصلت در دایركتیو OutputCache و یا تگ <add> در پروفایل مشخص نمود . 

Output Caching در یك سرویس وب
از Output Caching می توان برای متدهای جداگانه در یك سرویس وب نیز استفاده كرد . برای انجام این كار ، لازم است كه مقدار CacheDuration به WebMethod و قبل از تعریف متد اضافه گردد . كد زیر نتایج یك متد وب را به مدت 30 ثانیه cache می نماید .

<WebMethod(CacheDuration:=30)> _
    Public Function MyMethod(ByVal myParameter As Integer) As String
    ...
    End Function

با توجه به اتمام بحث Output caching  و روش های مختلف بكارگیری آن در برنامه های وب ، در بخش هفتم به بررسی data  caching خواهیم پرداخت .





نوع مطلب :
برچسب ها :
لینک های مرتبط :




درباره وبلاگ

سلام من آرش کاکاوند دانشجوی رشته کامپیوتر هستم و ورود شما رابه دنیای aspخوش امدمیگم.حتما نظر بدین تا من کارم رو بهتر ادامه بدم

مدیر وبلاگ : ارش کاکاوند
مطالب اخیر
نویسندگان
صفحات جانبی
نظرسنجی
شما کدام یک از برنامه های زیر را برای طراحی وب انتخاب می کنید؟








جستجو

آمار وبلاگ
کل بازدید :
بازدید امروز :
بازدید دیروز :
بازدید این ماه :
بازدید ماه قبل :
تعداد نویسندگان :
تعداد کل پست ها :
آخرین بازدید :
آخرین بروز رسانی :

                    
 
 
 
شبکه اجتماعی فارسی کلوب | Buy Website Traffic | Buy Targeted Website Traffic