ده تکنیک افزایش سرعت برنامه های تحت وب

پرووید

دسته های مقالات

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

ASP.NET چیست؟

ASP.NET یکی از تکنولوژی های محبوب برای توسعه برنامه های تحت وب می باشد. قابلیت های مهم ASP در کنار ویژگی های CLR و تعداد زیادی از خاصیت های دیگر، این تکنولوژی را به یک ابزار بسیار مناسب، قابل توسعه، و سریع برای ساخت برنامه های تحت وب تبدیل کرده است. با استفاده از ASP.NET خواهید دید که انعطاف پذیری زیادی را در مقابل کد نویسی کمتر به دست می آورید. علاوه بر ساخت برنامه های تحت وب با استفاده از تکنولوژی MVC، ساخت برنامه های تحت وب با استفاده از ASP.NET و تکنولوژی Entity Framework نیز یکی از بهترین انتخاب ها در دنیای توسعه دهندگان تحت وب امروز است. ساخت، نگهداری و مدیریت این نوع برنامه ها بسیار آسان و ایجاد تغییر در آنها به راحتی انجام می شود. ضمناً توصیه می کنیم که از آموزش رایگان برنامه نویسی وب با ASP.NET MVC نیز دیدن کنید.

تکنیک اول: مربوط به برگرداندن نتایج چندگانه (Multiple Resultsets) از دیتابیس

یکی از تکینک های افزایش کارایی در برنامه های تحت وب مرور کردن Data Access Layer برنامه است. به عبارت دیگر، بررسی کردن اینکه برنامه درخواست های خود را به چه صورت برای بانک اطلاعاتی ارسال می کند و نتایج را دریافت می کند. کار کردن با بانک اطلاعاتی و ارسال و دریافت پیام ها بیان برنامه ی تحت وب و بانک اطلاعاتی وقت زیادی از برنامه ی شما می گیرد. یکی از بهترین کارها برای افزایش کارایی در کار کردن با بانک اطلاعاتی، کم کردن تعداد درخواست های ارسالی به سمت بانک است. بنابراین، شما می توانید به جای ارسال دو درخواست و دریافت دو نتیجه، یک درخواست ارسال کنید و یک نتیجه دریافت می کند. این موضوع round trip time (مدت زمان بین شروع ارسال درخواست و اتمام دریافت پیام از بانک) را کم می کند. برای این منظور، شما می بایست درخواست های متعدد خود را در یک درخواست گنجانده و به جای دریافت چندین پاسخ، یک پاسخ که حاوی چند نتیجه است را دریافت کنید.

برا این کار شما هم می توانید stored procedure هایی بنویسید که چندین نتیجه را بر می گردانند و یا اینکه این کار را با استفاده از LINQ انجام دهید. به طور کلی، توصیه می شود که در بانک اطلاعاتی، stored procedure هایی تعریف کنید که نتایج چندگانه (Multiple Result) بر گردانند. با استفاده از این کار، لایه Logical Layer برنامه نیز پاک می ماند.

در مثال زیر، کدی را مشاهده می کنید که با استفاده از یک شی SqlCommand و متد ExecuteReader آن پاسخی را از بانک اطلاعاتی دریافت کردیم که حاوی چندین نتیجه است. برای رفتن به نتیجه ی بعدی از NextResult استفاده می کنیم. به علاوه ی مباحث مطرح شده، انجام Filtering و درخواست کردن تنها اطلاعاتی که به آنها نیاز دارید می تواند سرعت برنامه ی تحت وب شما را به مراتب افزایش دهد.

بنابراین، به عنوان اولین تکنیک افزایش سرعت برنامه های تحت وب، سعی کنید نگاهی دوباره به Data Access Layer برنامه انداخته و عملیات کار با بانک اطلاعاتی را مرور کنید.

به منظور یادیگری کامل برنامه نویسی سی شارپ به آموزش سی شارپ دات نت در ویژوال استادیو رجوع کنید. بنابراین، به عنوان تکنیک ششم از سری آموزش ده تکنیک افزایش سرعت اجرا در برنامه های دات سعی کنید که از کلاس StringBuilder برای کار کردن با رشته ها استفاده کنید.

تکنیک دوم: صفحه بندی کردن داده ها دریافتی از بانک اطلاعاتی

یکی از ویژگی های بسیار جالب کنترل DataGrid در کار کردن با داده های بانک اطلاعاتی در این است که این کنترل می تواند داده های دریافتی از بانک را صفحه بندی (Paging) کند. به عبارت دیگر، تنها گروهی از رکوردها در هر صفحه نمایش داده می شوند و کاربر با کلیک بر روی دکمه ی Next و Previous و یا شماره ی صفحه ی مورد نظر می تواند آن رکوردهایی را ببیند که در آن صفحه هستند.

یکی از مشکلات صفحه بندی در DataGrid در این است که برای انجام صفحه بندی باید تمامی رکوردهای مورد نظر از بانک اطلاعاتی خوانده شده و به DataGrid متصل (Bind) شوند. این موضوع هم زمان زیادی را مصرف می کند و هم داده های دریافتی از بانک اطلاعاتی را هدر می دهد. به عنوان مثال، اگر ده هزار رکورد از بانک اطلاعاتی خوانده شود و در هر صفحه فقط 25 رکورد نمایش داده شود، نود و نه هزار و نه صد و هفت و پنج رکورد به هدر می رود و در واقع بی دلیل از بانک اطلاعاتی خوانده می شود. این موضوع در ارسال هر درخواست به بانک اطلاعاتی اتفاق می افتد.

به منظور رفع کردن این مشکل، می توان از یک stored procedure استفاده کرد. در مثال زیر، stored procedure ی نشان داده شده است که در آن شماره ی صفحه ی مورد نظر و تعداد رکورد در هر صفحه را دریافت می شود و پس از پیمایش در جدول Orders، فقط رکوردهایی را بر میگرداند که در آن صفحه ی مورد نظر هستند.

بنابراین، به عنوان دومین تکنیک افزایش سرعت برنامه های تحت وب، سعی کنید با استفاده از stored procedure ها داده ها را صفحه بندی کنید و در هر درخواست به بانک اطلاعاتی، فقط رکوردهایی را برگردانید که در آن صفحه هستند.

تکنیک سوم: حوضچه ی کانکشن ها (Connection Pool)

ایجاد کردن یک کانکشن به بانک اطلاعاتی در برنامه ی تحت وب شما کاری بسیار وقت گیر است. یکی از موضوع های بسیار جالب در کار با کانکشن ها، استفاده از حوضچه ی کانکشن (Connection Pool) است. ایده ی پشت این تکنیک این است که شما فقط وقتی یک کانکشن جدید ایجاد می کنید که یک کانکشن از قبل وجود نداشته باشد. و هر گاه که عملیات مورد نظرتان با آن تک کانکشن تمام شود، آن را از بین نمی برید بلکه به حوضچه ی کانکشن ها بر میگرداند. کانکشن مورد نظر در حوضچه قرار می گیرد و بسته نمی شود تا در صورت نیاز با سرعت بالا بتواند به کار خود ادامه دهد.

استفاده از این تکنیک یک موضوع مهم دیگر بوجود می آورد و آن هم کانکشن های نشتی (Leaking Connection) است. لطفاً دقت کنید که پس از تمام کارتان با یک کانکشن حتما آن را بصورت صریح Close و سپس Dispose کنید. اغلب افراد بر این باورند که Garbage Collector، نهاتیاً کانکشن شما را بسته و از بین می برد، اما نکته ی مهم در این است که شما نمی دانید این کار چه موقع اتفاق می افتد. پس علی رغم باور اغلب افراد، برای ایمن تر بودن کار خود سعی کنید که در پایان کار خود، کانکشن مورد نظر را به صورت صریح Close و Dispose کنید.

به منظور استفاده از حوضچه ی کانکشن ها به قوانین زیر دقت کنید.

  • حتما از یک connection string یکسان استفاده کنید. پس از ایجاد کانکشن مورد نظر، کار خود را با آن انجام دهید و سپس آن را Close کنید. پس از این، کانکشن به حوضچه بر میگردد. در مرحله های بعدی کانکشن مورد نظر را Open کرده، کار خود را انجام دهید و دوباره آن را Close کنید. انجام این کار به سرعت برنامه صدمه ای نمیزند، اما هیچگاه کانکشن های خود را باز نگه ندارید.
  • در صورتی که از integrated authentication استفاده می کنید، می بایست که از یک thread یکسان برای ایجاد کانکشن ها استفاده کنید.

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

بنابراین، به عنوان سومین تکنیک افزایش سرعت برنامه های تحت وب، سعی کنید از حوضچه ی کانکشن ها استفاده کنید و برای انجام هر درخواست، یک کانکشن جدید را از نو نسازید.

تکنیک چهارم: کش کردن داده ها در برنامه های ASP.NET

یکی از مهمترین کارها قبل از نوشتن حتی یک خط کد، فکر کردن در رابطه با معماری برنامه ی مورد نظر است. با استفاده از کش کردن داده ها (Data Caching) به طور قابل ملاحظه ای می توان سرعت کار را بالا برد. بسیاری از کارهای تکراری یا کارهایی که مرتباً تکرار می شوند می توانند کش شوند. در ادامه بعضی از قانون های کش کردن داده ها را بیان می کنیم.

  • اولین و مهمترین قانون این است که اگر داده ای می تواند بیش از یک بار مورد استفاده قرار بگیرد، می توان آن را کش کرد.
  • اگر داده ای بصورت عمومی مورد استفاده قرار می گیرد و ربطی به یک کاربر خاص و یا یک تقاضای خاص ندارد می تواند مورد کش کردن قرار بگیرد.
  • داده های خاص نیز می توانند کش شوند به شرطی که طول عمر آنها طولانی باشد و مدت زمانی زیادی در برنامه ی شما مورد استفاده قرار بگیرند.

با این وجود، اغلب برنامه های تحت وب با ASP.NET دچار مشکل کمبود حافظه (Out of memory) می شوند. دلیل این موضوع کش کردن بیش از حد داده ها است. بنابراین، باید دقت کنید که داده های برنامه را بیش از حد مورد کش کردن قرار ندهید.

یکی از باورهای اشتباه این است که کارایی کدهای ویژوال بیسیک دات نت از سی شارپ دات نت بیشتر است. این موضوع اصلاً صحت ندارد. البته باید توجه کرد که با رعایت نکردن قوانین درست برنامه نویسی می توان در عملکرد یک برنامه چه با زبان سی شارپ چه ویژوال بیسیک و یا هر زبان دیگر مشکلاتی را ایجاد کرد. اما در رابطه با ویژوال بیسیک می توان با انجام تکنیک هایی از قبیل تعریف نکردن صریح نوع متغیرها کارایی را بالا برد. اما به طور کلی دقت کنید که هیچ برتری قابل توجه ای از نظر سرعت بین دو زبان سی شارپ و ویژوال بیسیک نیست.

یکی دیگر از موضوع هایی که اغلب برنامه نویسان به آن فکر می کنند در این است که سرعت کار برنامه هایی که به صورت code behind نوشته شده اند اغلب بیش از برنامه هایی است که به صورت inline کد نویسی شده اند. این موضوع هر چند در روند توسعه ی برنامه تفاوت ها و برتری هایی را ایجاد می کند اما از نظر سرعت اسمبلی نهایی هیچ تفاوتی را ایجاد نمی کند.

در پایان کار به دو ویژگی جالب از کش در ASP.NET اشاره می کنیم:

  • به صورت خودکار، سیستم کش در ASP.NET داده هایی که مدت زیادی مورد استفاده قرار نگرفته اند را حذف می کند. این موضوع در شرایطی که سیستم با کمبود حافظه مواجه است بسیار مفید می باشد.
  • سیستم کش در ASP.NET از مکانیزم منسوخ شدن داده ها (Expiration Dependency) استفاده می کند. به عبارت دیگر، داده های کش بر اساس رخ دادن اتفاقی برای یک فایل، یک کلید و یا سر رسید یک زمان از کش خارج می شوند.

بنابراین، به عنوان چهارمین تکنیک افزایش سرعت برنامه های تحت وب، سعی کنید از سیستم کش ASP.NET استفاده نکنید. البته همانطور که گفته شد انجام بیش از حد این موضوع باعث رخ دادن خطای out of memory می شود.

تکنیک پنجم: کش کردن داده ها بر اساس درخواست های کاربر

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

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

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

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

تکنیک ششم: پردازش پشت صحنه (Background Processing)

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

یکی از تکینک هایی که اغلب برنامه نویسان تحت وب با آن ناآشنا هستند انجام کارهای وقت گیر در پشت صحنه است. به منظور انجام این کار می توان از System.Threading استفاده کرد. جا دارد بگوییم که ما در وبسایت پرووید در بسته ی آموزش برنامه نویسی موازی این مباحث را بررسی کرده ایم. به هر حال، می توان با استفاده از کلاس System.Threading کارهای وقت گیر برنامه شبیه فرستادن ایمیل و یا حتی ایندکس گذاری پست های یک وبسایت را در پشت صحنه انجام داد.

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

پس، به عنوان ششمین تکنیک افزایش سرعت برنامه های تحت وب، می توانید به انجام کارهای وقت گیر برنامه در پشت صحنه فکر کنید. کارهایی شبیه فرستان ایمیل به افردای که به وبسایت شما subscribe کرده اند را با استفاده از کلاس System.Threading در پشت صحنه انجام دهید.

تکنیک هفتم: کش کردن صفحات و پروکسی سرور ها (Page Output Caching and Proxy Servers)

در ساخت برنامه های تحت وب و برنامه های سه لایه باید توجه کردم که ASP.NET لایه ی واسط کاربری (Presentation Layer) می باشد. وجود انواع صفحات، کنترل ها و محتویاتی که در صفحه نشان می دهند دلیل این موضوع است. اگر می بینید که در برنامه ی خود کد HTML یکسانی، فایل XML یکسانی و یا هر داده ی یکسان دیگری را مکررا تولید می کنید، می توانید به کش کردن آن صفحات فکر کنید. تنها کافی ست کد زیر را در بالای صفحات قرار دهید.

 
<%@ Page OutputCache VaryByParams="none" Duration="60">

بر اساس دستور بالا، می توانید خروجی تولید شده توسط صفحه را به مدت شصت ثانیه در کش قرار دهید و بارهای بعدی از آن استفاده کنید. این موضوع به شدت سرعت اجرای برنامه را افزایش میدهد چرا که در دفعات بعدی نیاز به تولید این صفحه نداریم. VaryByParams یکی از پارامترهای کش کردن داده هاست. بر اساس این پارامتر می توان تصمیم گرفت که چه موقع صفحه ی مورد نظر کش شود. برای مثال، default.aspx?Report=1 و default.aspx?Report=2 که آدرس یک صفحه با دو Query String متفاوت هستند را می توان با تنظیم کردن پارامتر VaryByParams به صورت VaryByParam=”Report” کش کرد.

به علاوه، با استفاده از سیسم کش برای صفحات، ASP.NET یک سری هدر های HTTP تولید می کند. با استفاده از این هدرها، سرورهای دیگر می توانند تقاضای برنامه ی شما را جواب دهند و درخواست ورودی کاربر به سرور شما ارسال نمی شود. در واقع این سرورهای میانی در نقش یک سری پروکسی عمل می کنند. بنابراین، با استفاده از کش کردن صفحات هم سرعت اجرای برنامه بهبود پیدا می کند که بار کاری (Load) سرور اصلی کاهش پیدا می کند.

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

تکنیک هشتم: استفاده از آخرین نسخه ی IIS

همیشه دقت کنید که در نسخه های جدید برنامه ها امکانات زیادی اضافه می شود. بنابراین، استفاده از آخرین نسخه ی اغلب برنامه کار عاقلانه ای است. در حوزه ی سایت برنامه های تحت وب، سعی کنید که از آخرین نسخه ی IIS استفاده کنید. برای مثال در نسخه ی 6 از IIS امکانات بسیار جالبی اضافه شد که در نسخه ی 5 آن وجود نداشت. بنابراین، تنها کسانی که از آخرین نسخه ی IIS استفاده می کردند می توانستند از این قابلیت استفاده کنند.

این قابلیت kernel caching نام داشت. با استفاده از kernel caching و کش کردن صفحات بر اساس تکینک قبلی، می توانیم سرعت اجرای برنامه را به شدت افزایش دهیم. هنگامی که یک صفحه را در ASP.NET کش می کنیم و در IIS قرار میدهیم و پس از مدتی یک درخواست ورودی برای آن صفحه وارد سرور می شود، kernel caching وارد عمل می شود. با استفاده از kernel caching بدون انجام context switching صفحه ی مورد نظر از کش برداشته شده و به سمت کاربر ارسال می شود. این قابلیت در IIS نسخه ی 6 اضافه شد و دلیل توصیه ی ما مبنی بر استفاده از آخرین نسخه ی برنامه ها نیز همین می باشد.

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

تکنیک نهم: استفاده از Gzip

فشرده سازی داده ها (Data Compression) موضوعی است که اغلب ماها با آن آشنا هستیم. استفاده از WinRar برای فشرده کردن یک فایل و یا فولدر و کاهش بایت ارسالی در شبکه، چیزی ست که اغلب ماها از آنها استفاده می کنیم. یکی از قابلیت های IIS فشرده کردن صفحات و سپس ارسال آنها به کاربر است. این کار توسط قابلیتی تحت عنوان فشرده سازی Gzip (Gzip Compression) انجام می شود. IIS فقط هنگامی از این قابلیت استفاده می کند که مرورگر کاربر توانایی کار با داده های فشرده شده توسط Gzip را داشته باشد. مرورگر های فایرفاکس و اینترنت اکسپلورر از این دسته اند. این امر باعث می شود که پهنای باند کمتری استفاده شود، سرعت دریافت داده ها توسط کاربر بالا برود و در نتیجه سرور بتواند در مدت زمان خاصی درخواست بیشتری را پاسخ دهد.

همانطور که در تکنیک پنجم افزایش سرعت اجرای برنامه های تحت وب عرض کردیم، استفاده از آخرین نسخه ی ابزارهایمان می تواند کار ما را بهبود ببخشد و این موضوع درباره ی Gzip نیز صدق می کند. در IIS نسخه ی 6 مکانیزم فشرده سازی Gzip پیشرفت جالبی داشت و بهتر از Gzip در نسخه ی 5 از IIS کار می کرد.

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

تکنیک دهم: View State در سرور کنترل ها

قابلیت view state یک موضوع بسیار جالب در برنامه های تحت وب است. با استفاده از view state می توانید داده هایی را ذخیره کنید و در هنگام post back شدن صفحه از آنها استفاده کنید. (جا دارد همین جا عرض کنیم که در ASP.NET MVC خبری از view state نیست. این موضوع به دلیل سربارهای view state در برنامه های تحت وب است که به امید خدا در مقاله ی دگیری از آن صحبت می کنیم.) تعداد زیادی از سرور کنترل ها از view state استفاده می کنند. یکی از برتری های view state در این است که بدون استفاده از cookie ها و یا ذخیره کردن داده ای در سرور، می توان صفحات وب و مرورگر کاربر را همگام نگه داشت.

با تمام این برتری ها، view state دارای معایبی هم هست:

  • سرعت ارسال صفحه به کاربر و سپس از کاربر به سرور کاهش پیدا می کند. دلیل این موضوع سربار داده ای ست که view state به صفحه اضافه می کند.
  • قرار دادن داده ها در view state و بعد خواندن آنها در سمت سرور هم زمانی را مصرف می کند. این دو عمل به ترتیب serialize کردن و deserialize کردن نام دارد.
  • به علاوه، استفاده از view state حافظه ی مصرفی در سمت سرور را افزایش می دهد.

همانطور که گفته شده اغلب کنترل ها از view state استفاده می کنند. DataGrid شدیداً از view state استفاده می کند. این موضوع حتی هنگامی که DataGrid به view state نیازی ندارد هم اتفاق می افتد. به راحتی می توان view state را برای یک کنترل غیرفعال کرد. به علاوه، بر اساس دستور زیر می توان view state را در سطح صفحه نیز غیر فعال کرد.

 
<%@ Page EnableViewState="false">

غیر فعال کردن view state در زمانی هایی که هر بار کنترلها را از نو ایجاد می کنید و یا صفحات را post back نمی کنید، می تواند سرعت برنامه را بهبود ببخشد.

پس، به عنوان نهمین تکنیک افزایش سرعت برنامه های تحت وب، می توانید از view state استفاده نکنید. همانطور که گفته شده سربارهای زیادی که view state برای برنامه ایجاد می کند باعث حذف شدن کامل آن از معماری ASP.NET MVC شده است.

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

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