افزايش كارآئی برنامه های وب در ASP.NET 2.0 New Page 1



ساير




 

 

 

SAKHA RAVESH CO.

 ا مروز

 جمعه  12  شهريور  1389  2010  Sep.  3   Friday ToDay
صفحه اصلی  مقالات نکته هادايره المعارف خودآموزها | تازه ها خود آزمون ها    
  نسخه قابل چاپ  

    5 4 3 2 1 

 عنوان

 نويسنده

  مشاهده

 تعداد آراء

 امتياز

 افزايش كارآئی برنامه های وب در ASP.NET 2.0 (بخش ششم)

 مديريت وب

4990

6

5

افزايش كارآيی برنامه های وب در ASP.NET 2.0

افزايش كارآئی برنامه های وب در ASP.NET 2.0 (بخش ششم)
آنچه تاكنون گفته شده است :

  • بخش های اول  و دوم  : اشاره به مجموعه ای از نكات كه رعايت آنها در زمان طراحی می تواند زمينه پياده سازی يك برنامه وب كارآ را فراهم نمايد .
  • بخش سوم  : معرفی برخی ابزارها برای تست برنامه های وب
  • بخش چهارم : مفاهيم اوليه caching ، روش های caching در ASP.NET ، نحوه استفاده از output caching
  • بخش پنجم :  Caching و Query string

در اين بخش بحث خود را در ارتباط با  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 خواهيم پرداخت .



جستجو

مقالات                 
دايره المعارف       
دوره های آموزشی


 

 

مشاهده گروه ها



              

 

 تهيه شده در شرکت سخا روش -  1382