برای ذخيره چندين نسخه 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 را نشان می دهد .

دسته بندی : افزایش درآمد سایت