PDA

View Full Version : چگونه MS AJAX را بهینه کنیم ؟



m.hamidreza
پنج شنبه 05 اردیبهشت 1387, 20:45 عصر
MS Ajax Extenssions v1.0 و Ajax Control Toolkit ها قطعا یه تحول در برنامه نویسی به شیوه ی مایکروسافتی بود ولی اون چیزی که مهمتره درست اسفاده کردن از اونهاست.

اگه تجربه استفاده از این کنترل ها رو داشته باشین می بینین که حجم لود اولیه شما خیلی بالا میره؛ برای بهینه کردن صفحاتی از این قبیل چه راهکارهایی رو پیشنهاد میکنین ؟

Behrouz_Rad
پنج شنبه 05 اردیبهشت 1387, 23:04 عصر
1) یک Stream با استفاده از HttpModule بر روی خروجی بگذار و تگ های script حاوی کدهای جاوا اسکریپت رو از ابتدای صفحه حذف و به انتهای اون اضافه کن.

2) یک قابلیت جدید که در کنفرانس Mix 2008 توسط برادر brada رونمایی شد، قابلیتی با نام ScriptCombining هست که کنترلی با نام ScriptReferenceProfiler انشاا... "بعداً" وجود خواهد داشت که روی فرم میندازی تا اسکریپ های لود شده رو بشناسی و بعد از اینکه اونها رو دیدی، همه رو کپی و در زیر تگ <CompositeScript> تگ ScriptManager الصاق (Paste خودمون!) می کنی. بدین ترتیب تعداد Round-trip به سرور کاهش پیدا می کنه.
البته اینجور که بنده در این Present دیدم، نهایتا تنها 4 کیلو بایت!!! در حجم نهایی صرفه جویی شد! خسته نباشن!
ًًٌٍَََ
ضمناً این فایل ها Cache میشن.

موفق باشید.

m.hamidreza
دوشنبه 09 اردیبهشت 1387, 22:01 عصر
مهندس جان ممنون بخاطر راهنماییت...
روی اون دارم کار میکنم ! :لبخند:
چند تا سوال :
توی Helpش راجع به Minification و Obfuscation فایل های js گفته، این axd. ها رو میشه این کارو کرد با هاشون ؟ آخه بعضی از فایل های js من بصورت gzip هست بعضی هاش نیست ! axd. ها منظورمه.
یه سوال دیگه که واسه خودم جالب بود مقایسه یه سایت با سایت های خودمه :
http://i27.tinypic.com/2ln9007.gif
============================================



http://i25.tinypic.com/m9xgz7.gif

HTTP request های من ثابته ولی تو این سایت چیکار کرده از 85 رسیده به 11 ؟

http://i27.tinypic.com/29q1jlg.gif

Behrouz_Rad
سه شنبه 10 اردیبهشت 1387, 12:05 عصر
داری کم کم وارد خطوط قرمز میشیا ;)
اول داستانی رو واست تعریف کنم:
وقتی که درخواستی پردازش و آماده ی ارسال به Client میشه، از یک Stream پیش فرض عبور می کنه.
تو می تونی این Stream رو کنترل کنی و داده هایی که به صورت قطعه قطعه و پیوسته به کلاینت ارسال میشن رو تحت کنترل خودت قرار بدی.
مثلا در پست قبلی گفتم:


یک Stream با استفاده از HttpModule بر روی خروجی بگذار و تگ های script حاوی کدهای جاوا اسکریپت رو از ابتدای صفحه حذف و به انتهای اون اضافه کن.

دقیقا منظورم همین هست. کار زیاد سختی هم نیست.

وقتی قطعه ای از داده های ارسالی به کلاینت میرسه 2 حالت وجود داره:
1) یا وابسته به درخواست دیگه ای نیستند.
2) یا وابسته به درخواست دیگه ای هستند.

در حالت اول، مرورگر بنا بر ذات "تفسیری" بودن خودش، داده ها رو می خونه و مثلا تشخیص میده که منظور از تگ IMG نمایش یک تصویر بر روی صفحه است و نسبت به خصوصیات این تگ رفتاری که در موتور رندرش تعریف شده رو با اون تگ انجام میده و تصویر رو نمایش میده.

در حالت دوم که نیاز به ارسال درخواست (های) دیگه ای برای تکمیل فاز عملیاتی هست، مجددا درخواستی به سرور ارسال میشه.
به عنوان مثال برای Stylesheet ها، فایل های js و ...

----------------------------------------------------------



توی Helpش راجع به Minification و Obfuscation فایل های js گفته، این axd. ها رو میشه این کارو کرد با هاشون ؟ آخه بعضی از فایل های js من بصورت gzip هست بعضی هاش نیست ! axd. ها منظورمه.

میشه.
بدین شکل که وقتی درخواستی برای فایلی با پسوند axd ارسال میشه، یک "درخواست مجازی" به URL شامل این هندلر بفرستی، داده ی برگشت داده شده رو ار طریق HttpWebResponse بگیری و اون رو Cache و هدرهای expire ،last-modified ،ETag رو تنظیم کنی.
مقدار ETag هم باید در سرور ذخیره بشه.
در مرتبه های بعد، کلاینت، هدر If-None-Match رو ارسال می کنه که با بررسی اون و مقدار ETag ارسال شده با مقدار ETag سرور، در صورت برابر بودن، کد وضعیت 304 رو که حکایت از عدم تغییر منبع داره میفرستی. در این حالت درخواستی در نظر گرفته نمیشه و منبع از Cache خونده میشه!

مشکلی که وجود داره این هست که تنها Mime-Type های رجیستر شده به وسیله ی IIS می تونن توسط اون پردازش بشن. js و css جزء Mime-Type های رجیستر شده نیستند!
در نتیجه ترفندی که حداقل محبوب من هست و همیشه کارایی داره گول زدن IIS با تغییر پسوند این فایل ها در Stream قبل از ارسال به کلاینت به axd یا هر Mime-Type رجیستر شده ی دیگه ای هست.
اگر توضیحات فوق گیجت کرده، بی خیال قضایای فوق بشو و درخواست های axd ای رو که "فقط" منجر به فایل های جاوا اسکریپت میشه در فایلی با پسوند js ذخیره و در صفحه شامل کن. در Stream هم خطوط مربوط به فایل های axd رو حذف کن.

پس جواب قسمت دوم سوالت رو هم گرفتی :)

موفق باشید.

dr_csharp
سه شنبه 10 اردیبهشت 1387, 17:36 عصر
سلام دوستان
راهنمایی کنید چطور راجب صحبت های این تاپیک اطلاعات کسب کنم

twelve
سه شنبه 10 اردیبهشت 1387, 17:41 عصر
سلام دوستان
راهنمایی کنید چطور راجب صحبت های این تاپیک اطلاعات کسب کنم


معلومه دیگه : Google (http://www.google.com/)

dr_csharp
چهارشنبه 11 اردیبهشت 1387, 08:13 صبح
معلومه دیگه : Google (http://www.google.com/)
منظورم کلمه ای که راجبش باید google کنم بود !

m.hamidreza
چهارشنبه 11 اردیبهشت 1387, 08:31 صبح
پس جواب قسمت دوم سوالت رو هم گرفتی :)



:تشویق: خیلی ممنون مهندس جان ! عالی بود . . .
روی قسمت اول کار میکنم تا برسم به ETag ها .خیلی مبحث قشنگ و کاربردیه ...
باز هم ممنون.


منظورم کلمه ای که راجبش باید google کنم بود !

YSlow for FireFox