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



ساير




 

 

 

SAKHA RAVESH CO.

 ا مروز

 چهارشنبه  11  اسفند  1395  2017  Mar.  1   Wendesday ToDay
صفحه اصلی  مقالات نکته هادايره المعارف خودآموزها | تازه ها خود آزمون ها    
  نسخه قابل چاپ  

    5 4 3 2 1 

 عنوان

 نويسنده

  مشاهده

 تعداد آراء

 امتياز

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

 مديريت وب

8702

8

4.5

با توجه به جایگاه داده در عصر حاضر و  لزوم نگاه جامع به این مقوله مهم ، بر آن شدیم تا محوریت فعالیت های خود را بر  روی این موضوع متمرکز نمائیم . از این رو گروه فابک با شعار فناوری اطلاعات برای کسب وکار شکل گرفت و  خدمات خود  را از طریق  سایت www.fabak.ir  به مخاطبان محترم عرضه می نماید

 

افزايش كارآيی برنامه های وب در 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