نکات کاربردی و ساده جهت افزایش سرعت وب‌سایت‌های ASP.NET

یکی از مهمترین نکات یک وب‌سایت خوب، داشتن سرعت بالای Load است، به شکلی که حتی داشتن سرعت بارگیری یک وب سایت حتی بر SEO آن نیز تاثیر گذار است. نکات بسیاری برای افزایش سرعت وب‌سایت وجود دارد که به تجربه توسعه دهنده و میزان اطلاعات وی بستگی دارد.

برخی از مهمترین نکات جهت افزایش سرعت یک وب‌سایت ASP.NET در زیر آمده است:

۱- به‌روز رسانی NET Framework. مربوط به وب‌سایت

ویرایش فعلی فریم ورک سایت خود را بررسی کنید. تنظیم آن به مقدار 4.5 (آخرین ویرایش فعلی) باعث افزایش بهره‌وری و سرعت خواهد شد. NET 4.5. دارای یک Garbage Collector بسیار قدرتمند است که می‌تواند heap‌های بسیار بزرگ را مدیریت کند. از بهینه‌سازی انجام شده دیگر در این نسخه، می توان به بهینه شدن چند هسته‌ای کامپایلر JIT و قابلیت معلق سازی برنامه‌های ASP.NET اشاره کرد. این بهینه‌سازی‌ها نیازی به تغییر کد برنامه ندارند.

۲- اعمال Caching

۱-۲- از صفت OutputCache برای صفحاتی که پویا نیستند و میزان بازدید آن‌ها زیاد است استفاده کنید. برای استفاده از این صفت در MVC می‌توان آن را به یک Controller به‌خصوص یا کل کلاس Controller اختصاص داد. برای مثال در زیر کنترلر Index برای ۲۰ ثانیه کش شده است:

 

[OutputCache(Duration = 20, VaryByParam = "None")]
public ActionResult Index(string Id)
{

}

۲-۲- سعی کنید عملیات I/O مورد نیاز برای داده‌ها را از دیسک کاهش دهید. به‌جای آن از کش کردن داده‌ها در حافظه‌ی اصلی کمک بگیرید. با این‌کار جلوی بسیاری از عملیات پر‌هزینه مانند کوئری‌های مکرر برای دریافت داده را خواهید گرفت. به علاوه کش کردن داده یک خاصیت مهم دیگر نیز دارد و آن این است که وقتی Data Source موقتا با مشکل مواجه می‌شود داده‌ها از دسترس خارج نمی شوند. دات نت کلاس‌های بسیار خوبی برای استفاده از امکانات کش در ASP.NET فراهم کرده است. این کلاس‌ها در فضای نام System.Runtime.Caching موجودند.

۳- نگهداری اطلاعات CSS و JavaScript خارج از صفحه

اضافه‌کردن کلاس‌های CSS و یا کدهای جاوا اسکریپت به‌صورت inline در Viewها باعث تولید مجدد آنها در هر بار درخواست صفحه خواهد شد. با این کار شما مزایای کش شدن صفحه را از دست خواهید داد. بنابراین همیشه این کدها را خارج از صفحه مورد استفاده نگهداری کنید و فقط ارجاعات آنها را (link) به صفحه اضافه کنید.

۴- فشرده سازی فایل

عموما در بیشتر وب‌سایت‌ها درخواست‌های مکرر و زیادی برای فایل‌های استاتیک از وب‌سرور داده می‌شود. این فایل‌ها می‌توانند فشرده شوند تا پهنای باند کمتری در هر درخواست مصرف شود. یک تنظیم بسیار عالی برای این‌کار در IIS 7  و بالاتر وجود دارد:

<configuration>  
    <system.webServer>    
        <urlCompression doStaticCompression=true  doDynamicCompression=true />  
    </system.webServer> 
</configuration> 

به نظر تگ  urlCompression کمی برای این‌کار عجیب به‌نظر می‌رسد ولی این تگ واقعا URL را فشرده نمی‌کند. این تگ محتوای اطلاعاتی که قرار است به مرورگر کاربر فرستاده شود را فشرده می‌کند. برای فعال سازی آن کافی است مقادیر ویژگی‌های این تگ به true تنظیم شود تا عمل فشرده سازی انجام شود و پهنای باند استفاده شده کاهش یابد.

۵- بسته‌بندی (Bundling) و کوچک سازی (Minification)

فایل‌های CSS و JavaScripts می‌توانند در یک فایل تکی قرار گیرند. با این‌کار تعداد درخواست‌های Http به وب‌سرور کاهش می‌یابد. همچنین با عملیات Minification بسیار از فضا‌های خالی این‌فایل‌ها حذف می‌شوند و در نتیجه حجم فایل ارسالی کاهش خواهد یافت. ابزار‌های بسیاری در وب برای این‌کار موجود است.

۶- استفاده از CDN

بهتر است فایل‌های جاوا اسکریپت پر استفاده و معروف مانند Jquery را به جای این‌که در یک هاست شخصی قرار دهیم آنها را در CDN بگذاریم. سرورهای CDN برای ارائه فایل‌های استاتیک پراستفاده طراحی شدند و به‌دلیل در نظر گرفتن موقعیت جغرافیایی درخواست کننده و سرعت بالا و پهنای باند بالای سرورهای آنها بسیار سریعتر از هاست شخصی عمل می‌کنند. همچنین احتمال زیادی وجود دارد که مرورگر به طور خودکار فایل‌های JavaScript را با درنظر گرفتن درخواست‌های متعدد با URL یکسان کش کند. یکی از معروف‌ترین سرویس‌های ارائه دهنده CDN، این سایت است.

۷- کنترل کردن درخواست‌های مربوط به تصاویر

۱-۷- استفاده از تکنیک Image Sprits:

با استفاده از تکنیک می‌توان تعداد زیادی تصویر کوچک را در قالب یک تصویر بزرگ ادغام کرد و سپس با استفاده از دستورات CSS هر قسمت را جداگانه فراخوانی کرد. این کار باعث کاهش تعداد درخواست‌ها از وب‌سرور و افزایش قابل توجه سرعت می‌شود. ابزارهای زیادی برای ایجاد این‌تصاویر و CSS تولیدی وجود دارد.

۲-۷- استفاده از Base64 Data URIs:

با استفاده از این تکنیک شما می‌توانید بدون نیاز به درخواست مستقیم تصویر از وب‌سرور به تصویر خود دست‌پیدا کنید.

۸- ترتیب رندر شدن اسکریپت‌ها

تگ‌های <script> را به انتهای هر صفحه منتقل کنید. این کار از این جهت مفید است که مرورگر هنگام رندر صفحه وقتی به تگ <script> می‌رسد تا اتمام کامل پردازش آن صبر می‌کند و سپس ادامه می‌دهد. این کار باعث می‌شود محتوای  HTML صفحه سریعتر از مابقی بخش‌ها رندر شده و به کاربر نمایش داده شود. البته گاهی اوقات مانند زمانی که فایل‌های CSS به این اسکریپت‌ها نیازمند است؛ امکان انتقال آن‌ها به انتهای صفحه وجود ندارد.

روش دیگر اینکار استفاده از صفت‌های این تگ است:

<script src=some.js defer>

</script>

استفاده از صفت defer باعث می‌شود اجرای اسکریپت تا پردازش کل صفحه به تعویق بیافتد.

<script src=some.js async>

</script>

استفاده از صفت async باعث می‌شود اجرای اسکریپت به صورت غیرهمزمان در اولین فرصت انجام شود.

۹- حذف ماژول‌هایHTTP  پیش‌فرض ASP.NET

ASP.NET دارای ماژول‌های HTTP بسیاری است که آماده گرفتن درخواست و پردازش هستند، این ماژول‌ها می‌توانند کل Pipeline را تسخیر کنند حتی درصورتی که برای برنامه‌ی شما پیکربندی نشده باشند.

همه‌ی این ماژول‌های پیش‌فرض در یک فایل machine.config در مسیر:

"WINDOWS%\Microsoft.NET\Framework\%VERSION%\CONFIG%"

قرار دارد. بنابراین در صورتی که دارای وب‌سرور اختصاصی هستید برخی از ماژول‌های پیش‌فرض را که استفاده‌ای از آن‌ها را ندارید از این فایل حذف کنید.

۱۰- کامپایل پروژه در حالت Release

همیشه گزینه Build پروژه را درحالت Release قرار دهید. این‌کار باعث می‌شود بسیاری از متادیتا‌ها و اطلاعات اضافی که صرفا جهت Debug برنامه کاربرد دارد از اسمبلی حذف شود و عملیات بهینه‌سازی برای اجرا روی کد نهایی انجام شود.

اگر فکر می‌کنید با درنظر گرفتن تمام این موارد دیگر نیاز به انجام هیچ‌کاری برای افزایش سرعت وب‌سایت ندارید؛ سخت در اشتباه هستید چون هرچقدر تجربه‌ی شما در زمینه طراحی و توسعه وب‌سایت و کار با ASP.NET بالاتر برود نکات بیشتری را باید رعایت کنید تا سایت سریعتری داشته باشید. برای رسیدن به این منظور تلاش کنید چون هرکسی می‌تواند با استفاده از یک CMS و یا این ابزارها یک سایت معمولی طراحی کند.

  • Book.mark.hu
  • co.mments
  • De.lirio.us
  • del.icio.us
  • Digg
  • DotNetKicks
  • E-Mail
  • Facebook
  • feedmelinks
  • Google
  • LinkedIn
  • msdn Social
  • MyShare
  • Slashdot
  • StumbleUpon
  • TwitThis
  • Tumblr
  • Yahoo! Buzz
  • Yahoo! MyWeb
  • Print
امکان ارسال نظر برای این موضوع وجود ندارد