عمومی

مروری بر شیوه های بهینه سازی کدها و کاهش مصرف منابع در asp.net

تکنیک های زیر جهت فراهم آوردن کارایی بسیار بالا برای سایت های طراحی شده با asp.net استفاده می شوند. با انجام این کارها کارایی سایت  از ۱۰ تا ۱۰۰ برابر افزایش می یابد . چندین httpmodule در asp.net وجود دارد که در pipeline مربوط به درخواست ها منتظر اند تا  درخواستها  را دریافت نمایند.

چک لیست :

بهینه سازی pipeline در asp.net

بهینه سازی پیکربندی فرآیندها در asp.net

استفاده بهینه از Browser caching

جلوگیری از حملات denial of service

SessionStateModule هر درخواست را بررسی کرده ، سپس به session cookie مراجعه و session صحیح را در Httpcontext لود میکند.البته همه ی این ماژولها ضروری نمی باشند. مثلا اگر از windows authentication برای اعتبار سنجی کاربران استفاده می کنید. به ماژول windows authentication نیازی ندارید.

چرا که این نوع ماژولها در pipeline قرار می گیرند و یک سری کدهای ضروری برای هر درخواست را اجرا می کنند.

ماژولهای پیش فرض در فایل machine.config تعریف می شوند.حال با افزودن تگ remove در فایل web.config می توانید آنها را حذف نمایید.

<httpModules>

         <!– Remove unnecessary Http Modules for faster pipeline –>

         <remove name=”Session” />

         <remove name=”WindowsAuthentication” />

         <remove name=”PassportAuthentication” />

</httpModules>

بهینه سازی پیکربندی فرآیندهای asp.net :

برخی از سطوح فرآیندها مانند اینکه چه تعداد threat در asp.net مورد استفاده قرار می گیرد ، یک thread برای چه مدت بلاک شود ، چندین درخواست برای کارهای IO بایستی نگهداری شده  تاکامل گردد و . . . در آن تعریف می شوند. فرآیندها منابع سیستمی بیشتری مصرف کرده و مقیاس پذیری بهتری را در هر سرور ارائه می دهند.

 بهترین استفاده از Browser cache

زمانیکه Url تغییر پیدا می کند مرورگر نسخه ی جدید داده ها را  از سرور دریافت می کند. با تغییر پارامترهای query string   ، URL نیز تغییر پیدا می کند. فرض کنید default.aspx در مرورگر cache شده ، حال زمانی که درخواست default.aspx?123 را ارسال می کنید ، محتوای جدید از سرور خوانده می شود  پس اگر می خواهید پاسخ تان از cache باشد ، بایستی به طور مداوم از Url اولیه استفاده کنید.

کش کردن محتوای ایستا (Static) برای مدت زمان طولانی دیگری تکنیکی است که برای فایلهای که قصد دارید حتی با به روز آوری آن باز هم کاربران فایل قبلی را مشاهده کنند مورداستفاده قرار می گیرد.

اگر فایلی را که توسط expire header کش شده باشد را به روز آوری کنید، کاربران جدید فایل را با تغییرات آن مشاهده می کنند .

جلوگیری از حملات denial of service

سرویس های وب هدفی جذاب برای هکرها می باشد، صفحاتی مانند pageflakes هدف مناسبی برای حملات DOS هستند،  چرا که اگر صفحه اصلی را به دفعات ویریت کنید هر hit یک کاربر جدید ، یک صفحه جدید و . . .را  تولید می کند.اولین تجریه ی ویزیت گرانترین آن خواهد بود.مثلا برای از کار انداختن یک برنامه دستور ساده زیر مناسب می باشد :

for( int i = 0; i < 100000; i ++ )

{

                                                                                                        WebClient client = new WebClient();

   client.DownloadString(“http://www.pageflakes.com/default.aspx”);

}

 حال با چندین فراخوانی پاسخ مناسبی را دریافت نمی کنید . این یعنی درخواست شما reject می شود.در این حالت زمانیکه تعداددرخواست ها از حد تعریف شده بیشتر می شود  درخواست ها برای مدتی deny می شوند.

تعداد درخواست ها برای هر IP نگهداری شده و IP فراخواننده نیز در cache مربوط به asp.net قرار می گیرد.

کش کردن فراخوانی های AJAX در مرورگر :

مرورگر می تواند تصاویر ، JavaScript و فایل های CSS را در هارد ذخیره  و یا فراخوانی های Http را کش کندعملیات کش بر اساس url انجام می شود درصورتیکه درخواست Url یکسانی ارسال شود اطلاعات از کش خوانده می شود و با ارسال url جدید اطلاعات از سرور خوانده خواهد شد.

این کار باعث لود شدن سریع تر داده ها شده و زمان roundtrip شبکه افزایش می یابد.

برای مثال header زیر مرورگر را تنظیم می کند تا برای ۶۰ ثانیه اطلاعات را از کش بخواند و بعد از اتمام این زمان به سرور مراجعه کرده و اطلاعات جدید را لود کند.

HTTP/1.1 200 OK

Cache-Control: private, must-revalidate, proxy-revalidate, max-age=60

 در نهایت اقدامات زیر بر روی کدهای asp.net می تواند کدهای شما را بهینه تر نماید :

Session state را غیر فعال کنید.

از صفت read-only در هر جا که نیاز است استفاده کنید.

مقادیر ذخیره شده در session را حذف کنید.

یک شی را برای چندین بار ذخیره نکنید.

Page size را کاهش دهید.

اندازه view state را کاهش دهید.

از فراخوانی های بی مورد AJAX خودداری کنید.

از متدهای خواندن داده  مانند GetString, GetInt64,  برای خوادندن مقادیر از datareader استفاده کنید .

تا حد ممکن از XMLDocument استفاده نکرده و به جای آن XPathDocument را به کار ببرید.

منابع :

http://www.codeproject.com

http://www.c-sharpcorner.com/

به این نوشته امتیاز دهید
[Total: 0 Average: 0]

با کارت بانکی باشگاه ایران هاست پولتان به حسابتان باز می گردد.

همین حالا رایگان عضو شوید

مدیر بلاگ

مشخصات مدیر

نوشته های مشابه

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

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

دکمه بازگشت به بالا
بستن
بستن