در این پست، پنجمین تکنیک از سری آموزش ده تکنیک افزایش سرعت برنامه های تحت وب را در سایت پرووید قرار داده ایم. تکنیک پنجم مربوط به کش کردن داده ها بر اساس درخواست های کاربر می شود.

در قسمت قبل از این آموزش در رابطه با کش کردن داده ها در ASP.NET صحبت کردیم. سیستم کش در ASP.NET طوری طراحی شده است که داده ها را برای مدتی طولانی یا تا زمانی که شرطی رخ دهد کش می کند. اما، کش کردن بر اساس درخواست (Per-Request Caching) به معنی کش کردن داده ها به اندازه ی مدت زمان درخواست کاربر است. به عبارت دیگر، قسمتی از کد که با هر درخواست جدید اجرا می شود و داده هایی را فقط و فقط یک بار مورد دسترسی قرار می دهد را می توان کش کرد.

به عنوان یک مثال کاربردی تر، فرض کردن یک فروم را با ASP.NET طراحی کرده اید. با هر درخواست کاربر برای اولین صفحه ی این فروم، باید تعدادی فایل css خوانده شده و برای تنظیم ظاهر کاربری برنامه بر اساس هر کاربر استفاده شود. بعضی از این داده ها را می توان کش کرد ولی skin مربوط به برنامه که فقط یک بار مورد دسترسی قرار می گیرد و می تواند بارها بر اساس مدت زمان درخواست کاربر مورد استفاده قرار بگیرد چه؟ این داده را می توان با سیستم PerRequest Caching کش کرد.

به منظور استفاده از این تکنیک از کلاس HttpContext استفاده می کنیم. با دریافت هر درخواست ورودی از سمت کاربر به برنامه ی ما، یک شی از این کلاس ساخته می شود و می توان با استفاده از پروپرتی Current به آن درخواست خاص دسترسی پیدا کرد. یک پروپرتی دیگر از این کلاس Items نام دارد. این کالکشن حاوی داده هایی ست که فقط به اندازه ی مدت زمان آن درخواست خاص کش می شوند. همانطور که از کش به منظور افزایش سرعت و کارایی برنامه استفاده می کنیم، می توانیم از HttpContext.Items به منظور ذخیره کردن داده هایی استفاده کنیم که در طول آن درخواست خاص مورد استفاده قرار می گیرند. سیستم پشت HttpContext.Items دقیقاً شبیه کش است. اگر داده ی مورد نظر در HttpContext.Items وجود نداشته باشد، به آن اضافه می شود. در فراخوانی های بعدی، داده ی مورد نظر از HttpContext.Items خوانده می شود.

بنابراین، به عنوان پنجمین تکنیک افزایش سرعت برنامه های تحت وب، سعی کنید برای داده هایی که قابلیت انجام آنها را دراند، از سیستم کش به ازای درخواست استفاده کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *