PDA

View Full Version : آموزش: باید و نبایدها در ASP.NET



ahmad156
چهارشنبه 16 مهر 1393, 10:27 صبح
سلام دوستان.
هدفم از ایجاد این تاپیک سوالات برخی از دوستان هست که میبینم چون خیلی از باید و نباید های اولیه رو رعایت نمیکنن به بعضی مشکلات اولیه برخورد میکنن.از دوستان هم خواهش میکنم اگر باید و نباید مفیدی مدنظرشون هست کمک کنن.در ضمن اینها تجارب شخصی هست و شاید از دید بعضی از دوستان مورد تایید نباشه
1-عدم استفاده از کامپوننت های آماده:
نمیگم استفاده از این کامپوننت ها بده ولی خودتون رو اصلاً به استفاده از کامپوننت ها آماده عادت ندین.به شخصه ToolBox کنار Visual Studio رو همیشه حذف میکنم
2-طراحی سایت رو در محیط Source کار کنین:
شاید یه خرده اوایل سخت باشه.خب چرا وقتی با یه کلیک کنترل رو میتونیم به صفحه اضافه کنیم بیایم خودمون رو اذیت کنیم؟ولی اینجوری تسلط بیشتری به کدهای HTML و Css تون خواهین داشت
3-قرار دادن کدهای JavaScript در انتهای صفحه و قرار دادن کد های Css در ابتدای صفحه(<head>)
4- قرار دادن کد های Jquery درون document.ready زمانی که از UpdatePanel استفاده نمیکنیم و قرار دادن کدهای Jquery درون تابع pageLoad زمانی که از UpdatePanel استقاده میکنیم
5-پیاده سازی Paging دستی به جای استفاده از Paging کنترل هایی همچون GridView (البته در مواقعی که تعداد رکودها زیاد باشه)
6-حتی المقدور استفاده از Repeater به جای GridView
7-همیشه Css هاتون رو به صورت فایل خارجی به صفحه لینک کنین و Style هاتون رو از HTML جدا کنین
8-استفاده از Css Framework هایی همچون BootStrap یا BluePrint یا ...
9-در صفحاتی که صرفاً عمل نمایش انجام میشه و حالات کنترل ها مهم نیست حتماً EnableViewState رو برابرfalse قرار بدین
10-حتماً حتماً حتماً از برنامه نویسی سه لایه استفاده کنین
11-....

kahe.mehrdad
چهارشنبه 16 مهر 1393, 10:42 صبح
با سلام. ممنون از زحماتتون.
یه سوال واسم پیش اومد. میشه راجع به repeater یه توضیح مختصر بدید؟ من همیشه از grid استفاده میکنم اگر امکان داره یه مقایسه کوچیک هم در حد یکی دو جمله میشه بفرمایید.
ممنون و متشکر.

ahmad156
چهارشنبه 16 مهر 1393, 10:51 صبح
اول خروجی GridView به صورت Table هست که از هم دست شما رو برای انعطاف بیشتر در طراحی میبنده و هم از لحاظ طراحی مورد تایید نیست و بهتره سایت شما با DIV طراحی بشه.GridView به خاطر Option های زیادی که داره سنگین تر از Repeater هست.به شخصه همیشه از Repeater استفاده میکنم مگر در موارد خاص مجبور شم از GridView استفاده کنم

ahmad156
چهارشنبه 16 مهر 1393, 23:55 عصر
11-همیشه بعد از Publish سایت debug رو توی web.config برابر false کنین
12-حتی المقدور از Cookie برای تامین امنیت سایتتون استفاده کنین نه از Session
13-- در صفحه لاگین سایت، autocomplete خاموش شود.
14-تمام فرم‌های عمومی برنامه باید captcha داشته باشند.
15-قسمت custom errors فایل web.config برنامه به نحو صحیحی مقدار دهی شود.
16.اسکریپت یا استایل های عمومی مانند jquery یا bootstrap رو به صورت CDN به صفحه ضمیمه کنین.
17-برای اسکریپت یا استایل های شخصی هم از با استفاده staticcontent مربوط به IIS ، درون کش قرار بدین.
18-سعی کنین عکس های سایتتون (که بیشتر شامل آیکون می باشد) به صورت Sprite Image استفاده کنین.
19-همیشه در کنار اعتبارسنجی سمت Server ،اعتبار سنجی Client رو فراموش نکنین.
20-همیشه فقط اون قسمتی از صفحه که نیاز به Ajax داره رو درون UpdatePanel بزارین نه کل صفحه رو.
21-....

aminmousavi
پنج شنبه 17 مهر 1393, 01:04 صبح
سلام .
فرمودین EnableViewState رو برای فرم هایی که کنترل خاصی ندارند false باشه ، تا بحال به این نکته توجه نمیکردم ، آیا توی سرعت سایت تاثیر میزاره ؟ (اگر تاثیر میزاره ، چشمگیره ؟)
ممنون :لبخندساده:

ahmad156
پنج شنبه 17 مهر 1393, 07:34 صبح
سلام .
فرمودین EnableViewState رو برای فرم هایی که کنترل خاصی ندارند false باشه ، تا بحال به این نکته توجه نمیکردم ، آیا توی سرعت سایت تاثیر میزاره ؟ (اگر تاثیر میزاره ، چشمگیره ؟)
ممنون :لبخندساده:
صفحه رو زمان اجرا در مرورگر،سورس اون رو چک کنین(View Page Source).
تو تا Hidden Field موجود VIEWSTATE__ و EVENTVALIDATION__ رو چک کنین.بعضی از مواقع تا چند ده کیلو بایت میرسه با وجود اینکه هیچ نیازی بهش نداریم.یه مثالش زمانی هست که به GridView دیتاهای زیاد میدیم و اون لحظه یه نگاه به تو تا فیلد بالا کنین به عمق فاجعه پی خواهید برد.اون رو توی Notpade کپی کنین و ذخیرش کنین بعد حجمش vرو بینین یا اینکه از ViewStateSize (https://addons.mozilla.org/en-US/firefox/addon/viewstate-size/)استفاده کنین.البته شما به صورت کامل نمیتونین دو تا فیلد رو از بین ببرین ولی با قرار دادن مقدار false به enableViewState حجم اون رو بسیار ناچیز میکنین.در ضمن یکی از راههای تشخیص ASP.NET Web Form و ASP.NET MVC هم همین فیلد هست که دیگه توی MVC خبری از ViewState نیست و این دو فیلد نیست.

ahmad156
چهارشنبه 23 مهر 1393, 08:53 صبح
21-حتما از firebug (http://getfirebug.com/)استفاده کنین
22-حتماً از Resharper (https://www.jetbrains.com/resharper/)استفاده کنین
23-استفاده از Region (http://msdn.microsoft.com/en-us/library/9a1ybwek.aspx)جهت بسته بندی کدها
24-استفاده از Url Routing (سئو بهتر-کوتاه تر و زیباتر بودن و در نتیجه بهتر اون رو میشه به خاطر سپرد-ثابت ماندن آدرس با تغییر folder یا نام صفحه-امنیت بیشتر)
25-استفاده از Extension Method (http://msdn.microsoft.com/en-us//library/bb383977.aspx)
26-مقادیر تاریخ رو به هم میلادی و هم به شمسی ذخیره کنین.میلادی بابت سرعت بهتر و استفاده از توابع خوبی که داره و تاریخ شمسی هم به دلیل گزارش گیری ها محتمل که باید بر اساس ماه های شمسی باشه
27-ConnectionString رو توی Web.Config بزارین (http://msdn.microsoft.com/en-us/library/vstudio/ms178411%28v=vs.100%29.aspx).
28-تا حد امکان از متغیرهای Static استفاده نکنید(توابع Static مشکلی نداره)

demolition
چهارشنبه 23 مهر 1393, 10:13 صبح
11
12-حتی المقدور از Cookie برای تامین امنیت سایتتون استفاده کنین نه از Session

سشن از نظر امنیت خیلی بهتر از کوکیه
ایرادی که میشه به سشن گرفت اونم در صورت مدیریت نادرست "ایجاد بار اضافه بر روی سروره"
اینجا (http://www.allinterview.com/showanswers/74177/what-is-the-difference-between-cookies-and-session.html) توضیح مختصری در این باره هست

ahmad156
چهارشنبه 23 مهر 1393, 11:38 صبح
سشن از نظر امنیت خیلی بهتر از کوکیه
ایرادی که میشه به سشن گرفت اونم در صورت مدیریت نادرست "ایجاد بار اضافه بر روی سروره"
اینجا (http://www.allinterview.com/showanswers/74177/what-is-the-difference-between-cookies-and-session.html) توضیح مختصری در این باره هست
منظور استفاده کوکی تنها نیست.بنده استفاده از FormsAuthentication (http://barnamenevis.org/showthread.php?415958-%D8%AA%D8%B9%DB%8C%DB%8C%D9%86-%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-FormsAuthentication) با رعایت نکات امنیتی از قبیل HttpOnly و Encrypt و ... رو به سشن ترجیح میدم.
اگر 5 هزار کاربر آنلاین با سایت کار کنن اون موقع چه جوری میشه بار اضافه رو روی سرور مدیریت کرد؟؟

demolition
پنج شنبه 24 مهر 1393, 12:35 عصر
منظور استفاده کوکی تنها نیست.بنده استفاده از FormsAuthentication (http://barnamenevis.org/showthread.php?415958-%D8%AA%D8%B9%DB%8C%DB%8C%D9%86-%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-FormsAuthentication) با رعایت نکات امنیتی از قبیل HttpOnly و Encrypt و ... رو به سشن ترجیح میدم.

خب این نظر شخصی شماست شاید شما دوست داشته باشید سایتی ایجاد کنید که هر چند سال یکبار مجبور به تغییر در کد نویسی باشید .



اگر 5 هزار کاربر آنلاین با سایت کار کنن اون موقع چه جوری میشه بار اضافه رو روی سرور مدیریت کرد؟؟

من شخصا برای نگه داری اطلاعات کاربر از سشن استفاده میکنم به این صورت که کد کاربری رو داخل سشن میریزم و هر جا نیاز داشته باشم اطلاعات شخص رو بر اساس کد کاربر واکشی میکنم حال فکر میکنید برای 5000 هزار کاربر چقدر فضا اشغال میشه ؟
من آزمایشی انجام دادم و کل اطلاعات هر کاربر(نه تنها کد کاربری ، نام و نام خانوادگی ، یوزر نیم ، پسورد و و و ) رو داخل سشن ریختم حجم فضای اشغال شده 2kB بود که اگه بخواهیم در 5000 هزار ضرب کنیم میشه 10000 کیلو بایت ! یعنی حدود 10 مگابایت
برای 10 مگابایت نیازی نمیبینم از کوکی استفاده کنم که اگه امنیتش تضمین شده بود هیچ کس از سشن استفاده نمیکرد!
امیدوارم دوباره بحث Encrypt کردن کوکی رو ادامه ندید چون هیچ قفلی نیست که باز نشه! اونم وقتی قفل توی سیستم هکر هست و شما فکر میکنید کسی نمیتونه بازش کنه!

ahmad156
پنج شنبه 24 مهر 1393, 17:53 عصر
خب این نظر شخصی شماست.

به قول شما نظر،نظر شخصی است و ما هیچ ادعایی نداریم. ولی امیدوارم آقای بهروز راد رو بشناسین این نظر (http://barnamenevis.org/showthread.php?252650-%D8%B3%D9%88%D8%A7%D9%84-%D8%AF%D8%B1-%D9%85%D9%88%D8%B1%D8%AF-%DA%A9%D9%88%DA%A9%DB%8C-%D9%87%D8%A7%DB%8C%DB%8C-ASP-NET_SessionId-ASPXAUTH&p=1124011&viewfull=1#post1124011) ایشون در مورد Session هست البته آقای وحید نصیری هم همین نظر رو داشتن ولی هر چی گشتم نتونستم مطلبشون رو پیدا کنم.اینجا هست که دیگه نمیشه بگین نظر شخصی هست:چشمک:


شاید شما دوست داشته باشید سایتی ایجاد کنید که هر چند سال یکبار مجبور به تغییر در کد نویسی باشید .

این رو دقیق متوجه نشدم. ولی اگر درست متوجه شده باشم وقتی از Session استفاده میکنین هر چند ماهی یکبار مجبور به تغییر در کد نویسی هستید.من که همون کد های قبلیم رو توی پروژه های بعدیم هم کپی میکنم.


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

شما دقیقاً دارین برعکس کار میکنین.تنها جایی که میگن مشکلی نیست از Session استفاده کنین اطلاعات حساس هست نه کد کاربری شما!!



من شخصا برای نگه داری اطلاعات کاربر از سشن استفاده میکنم به این صورت که کد کاربری رو داخل سشن میریزم و هر جا نیاز داشته باشم اطلاعات شخص رو بر اساس کد کاربر واکشی میکنم حال فکر میکنید برای 5000 هزار کاربر چقدر فضا اشغال میشه ؟
من آزمایشی انجام دادم و کل اطلاعات هر کاربر(نه تنها کد کاربری ، نام و نام خانوادگی ، یوزر نیم ، پسورد و و و ) رو داخل سشن ریختم حجم فضای اشغال شده 2kB بود که اگه بخواهیم در 5000 هزار ضرب کنیم میشه 10000 کیلو بایت ! یعنی حدود 10 مگابایت
برای 10 مگابایت نیازی نمیبینم از کوکی استفاده کنم که اگه امنیتش تضمین شده بود هیچ کس از سشن استفاده نمیکرد!

من هیچ برنامه نویس حرفه ای ندیدم که از Session بابت احراز هویت استفاده کنه.اینجا (http://barnamenevis.org/showthread.php?97855-%D8%AA%D8%AD%D9%84%DB%8C%D9%84%DB%8C-%D8%A8%D8%B1-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-session-!-%D8%9F%D8%9F&p=480081&viewfull=1#post480081)رو هم داشته باشین که نگین نظر شخصی هست.


امیدوارم دوباره بحث Encrypt کردن کوکی رو ادامه ندید چون هیچ قفلی نیست که باز نشه! اونم وقتی قفل توی سیستم هکر هست و شما فکر میکنید کسی نمیتونه بازش کنه!

عجب!!!!!پس توصیه میکنم یه خرده در امنیت الگوریتم Rijndael (http://en.wikipedia.org/wiki/Advanced_Encryption_Standard)تحقیق کنین.
هیچ ضریب امنیتی صددرصد نداریم ولی فکر میکنین که امنیت Session صددرصد هست؟؟؟؟session hijacking (http://en.wikipedia.org/wiki/Session_hijacking) پس چیه این وسط؟

mhq1368
پنج شنبه 24 مهر 1393, 17:53 عصر
21-حتما از firebug (http://getfirebug.com/)استفاده کنین
22-حتماً از Resharper (https://www.jetbrains.com/resharper/)استفاده کنین
23-استفاده از Region (http://msdn.microsoft.com/en-us/library/9a1ybwek.aspx)جهت بسته بندی کدها
24-استفاده از Url Routing (سئو بهتر-کوتاه تر و زیباتر بودن و در نتیجه بهتر اون رو میشه به خاطر سپرد-ثابت ماندن آدرس با تغییر folder یا نام صفحه-امنیت بیشتر)
25-استفاده از Extension Method (http://msdn.microsoft.com/en-us//library/bb383977.aspx)
26-مقادیر تاریخ رو به هم میلادی و هم به شمسی ذخیره کنین.میلادی بابت سرعت بهتر و استفاده از توابع خوبی که داره و تاریخ شمسی هم به دلیل گزارش گیری ها محتمل که باید بر اساس ماه های شمسی باشه
27-ConnectionString رو توی Web.Config بزارین (http://msdn.microsoft.com/en-us/library/vstudio/ms178411%28v=vs.100%29.aspx).
28-تا حد امکان از متغیرهای Static استفاده نکنید(توابع Static مشکلی نداره)

با سلام و خسته نباشید


میشه بگید firebug و resharper چه کاری میکنن ؟ چون من توی سایتش متوجه کارشون نشدم

ahmad156
پنج شنبه 24 مهر 1393, 18:05 عصر
اینجا (http://www.dotnettips.info/post/862/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%81%D8%A7%DB%8C%D8%B1%D8%A8%D8%A7%DA%AF-1)آموزش فایرباگ به صورت کامل هست.خیلی خیلی مفیده
Resharper رو هم میتونین دانلود کنین و نصبش کنین(با کرک).بهترین استفادش بهینه کردن کد شما(به صورت پیشنهاد) و همچنین سریع تر شدن کد نویسی شما.

demolition
پنج شنبه 24 مهر 1393, 19:32 عصر
به قول شما نظر،نظر شخصی است و ما هیچ ادعایی نداریم. ولی امیدوارم آقای بهروز راد رو بشناسین این نظر (http://barnamenevis.org/showthread.php?252650-%D8%B3%D9%88%D8%A7%D9%84-%D8%AF%D8%B1-%D9%85%D9%88%D8%B1%D8%AF-%DA%A9%D9%88%DA%A9%DB%8C-%D9%87%D8%A7%DB%8C%DB%8C-ASP-NET_SessionId-ASPXAUTH&p=1124011&viewfull=1#post1124011) ایشون در مورد Session هست البته آقای وحید نصیری هم همین نظر رو داشتن ولی هر چی گشتم نتونستم مطلبشون رو پیدا کنم.اینجا هست که دیگه نمیشه بگین نظر شخصی هست

شما یکم بیشتر به حرفای اقای راد دقت کنید


احتمال تکرار اون بسیار نادره


. بنابراین تا زمانی که کسی کلید رمز رو نمیدونه، مشکلی وجود نداره.

پس تا وقتی کسی رمز رو نمیدونه مشکلی نداره !!!




Client رو تنبل بار نیارید. کمی از بار برنامه رو هم روی دوش اون بندازید. البته در این کار زیاده روی نکنید ;)

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



من هیچ برنامه نویس حرفه ای ندیدم که از Session بابت احراز هویت استفاده کنه
واقعا!! بیاید یه روز ببرمتون با چند تاشون آشناتون کنم.


اینجا (http://barnamenevis.org/showthread.php?97855-%D8%AA%D8%AD%D9%84%DB%8C%D9%84%DB%8C-%D8%A8%D8%B1-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-session-!-%D8%9F%D8%9F&p=480081&viewfull=1#post480081)رو هم داشته باشین که نگین نظر شخصی هست.
در اینجا چیزی درباره حرفه ای بودن یا نبودن من ننوشته تنها نکتش اینه


و یا من بی بضاعت که نمی تونم هزینه ی تامین یک سرور اختصاصی رو پرداخت کنم
نیازی به تهیه سرور اختصاصی نیست با vds اختصاصی مشکلتون حل میشه



عجب!!!!!پس توصیه میکنم یه خرده در امنیت الگوریتم Rijndael (http://en.wikipedia.org/wiki/Advanced_Encryption_Standard)تحقیق کنین.

من قبلا دربارش خیلی تحقیق کردم و اون مطلبو نوشتم



session hijacking (http://en.wikipedia.org/wiki/Session_hijacking) پس چیه این وسط؟

session hijacking یکی از سخترین حملات هست که احتمال نتیجه گرفتن هکر شاید 1 در میلیون باشه!!

ahmad156
پنج شنبه 24 مهر 1393, 19:43 عصر
پس تا وقتی کسی رمز رو نمیدونه مشکلی نداره !!!

از کجا میتونه اون رو بدونه؟امکانش چقدر هست؟


واقعا!! بیاید یه روز ببرمتون با چند تاشون آشناتون کنم.

پس شک نکن حرفه ای نیستن.مطمئناً آقای راد یا آقای نصیری تو حوزه NET. جز بهترین برنامه نویس های کشور هستن(البته نه بهترین) و حرف اونا برای شخص بنده حجت هست.
کلاً ادامه بحث رو بیهوده میدونم.
موفق باشین دوست عزیز

demolition
پنج شنبه 24 مهر 1393, 20:00 عصر
منم نمیخوام بحث کنم فقط یه سوال اینجا متوجه منظوره شما نشدم



شما دقیقاً دارین برعکس کار میکنین.تنها جایی که میگن مشکلی نیست از Session استفاده کنین اطلاعات حساس هست نه کد کاربری شما!!

یعنی اطلاعات حساس نباید داخل سشن قرار بگیره ؟
اگر منظورتون همینه پس چرا درگاههای پرداخت (داخل سمپل بانک) از سشن برای مهمترین و حساسترین دادهها استفاده میکنن ؟

نمونه کد درگاه سداد بانک ملی

protected void PayBtn_Click(object sender, EventArgs e)
{

Session["ReturnURL"] = ConfigurationManager.AppSettings["ReturnURL"];
Session["AdditionalInfo"] = TextBoxAdditionalInfo.Text;
Session["OrderId"] = txtOrderID.Text;
Session["MerchantID"] = ConfigurationManager.AppSettings["MerchantId"];
Session["Terminal"] = ConfigurationManager.AppSettings["Terminal"]; ;
Session["TranKey"] = ConfigurationManager.AppSettings["TranKey"];
Session["ServiceURL"] = ConfigurationManager.AppSettings["ServiceURL"];
Session["PaymentURL"] = ConfigurationManager.AppSettings["PaymentURL"];
Response.Redirect("MerchantBeforePost.aspx");
}

ahmad156
پنج شنبه 24 مهر 1393, 20:15 عصر
اون سشن ها رو توی DataBase ذخیره میکنن.آیا شما هم همین کار رو میکنین؟آیا دوستانی که از Session استفاده میکنن چند در صد این کار رو میکنن؟

demolition
پنج شنبه 24 مهر 1393, 20:28 عصر
اون سشن ها رو توی DataBase ذخیره میکنن.آیا شما هم همین کار رو میکنین؟
در بیشتر موارد بله .


آیا دوستانی که از Session استفاده میکنن چند در صد این کار رو میکنن؟

شما بهتر میدونید چون بیشتر باهاشون سر و کار دارید. ولی تا جایی که دیدم توی پروژها از هر 10-15 نفر شاید یکی

پیام حیاتی
پنج شنبه 24 مهر 1393, 21:55 عصر
پیشنهاد می کنید seassion رو در دیتابیس ذخیره کنیم یا مجزا باشه؟

ahmad156
پنج شنبه 24 مهر 1393, 22:06 عصر
یا استفاده نکنید یا اینکه استفاده می کنید توی DataBase ذخیره کنین.ولی سعی کنین استفاده نکنین:چشمک:

sun2rise
شنبه 26 مهر 1393, 01:19 صبح
یکی دوتای اونا که واسم جالب بود ولی الباقی اش رو خودمم مثل شما کار میکنم به طور کلی استفاده از تول باکس برای ظاهر سایت یه کار غیرحرفه ای هستش و مطمئننا بعدا برای ویرایش دچار مشکل خواهیم خورد

mamad_za
یک شنبه 27 مهر 1393, 22:07 عصر
16.اسکریپت یا استایل های عمومی مانند jquery یا bootstrap رو به صورت CDN به صفحه ضمیمه کنین.
17-برای اسکریپت یا استایل های شخصی هم از با استفاده staticcontent مربوط به IIS ، درون کش قرار بدین.
18-سعی کنین عکس های سایتتون (که بیشتر شامل آیکون می باشد) به صورت Sprite Image استفاده کنین.

یه خورده راجب این 3 گزینه توضیح میدید؟

ahmad156
یک شنبه 27 مهر 1393, 23:11 عصر
اسکریپت یا استایل های عمومی مانند jquery یا bootstrap رو به صورت CDN به صفحه ضمیمه کنین.

مزایای زیادی داره من جمله:
کش بهتر.مثلاً شما فایل JQuery رو به عنوان CDN توی سایت قرار میدین و می دونین که مرورگر به صورت پیش فرض فایل های استاتیک رو کش میکنه.بیشتر سایت ها هم از CDN استفاده می کنن.پس وقتی سایت شما لود میشه میتونه از کش موجود مربوط به سایت قبلی که لود شده استفاده کنه
استفاده از پهنای باند سرور CDN به جای استفاده از پهنای باند سرور خودتون
استفاده از سرعت و قدرت بهتر سرور های CDN
و....


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

فایل های استاتیک چون تغییر نمیکنن(معمولاً)، بهتره به یه نحوی کش بشه.حالا یا از طریق CDN یا از طریق راه های دیگه مانند StaticContent


سعی کنین عکس های سایتتون (که بیشتر شامل آیکون می باشد) به صورت Sprite Image استفاده کنین

شما به ازای هر فایل یه Request به سرور داده میشه.حالا فکر کنین به جای 20 تا عکس و بالطبع 20 Request یه دونه عکس و یه Request داشته باشین.