iran rules jazbe modir
snapphost mahak

شیخ شاهین

Miscellaneous ۱۰ راز بالا بردن کارایی asp.net

پست های پیشنهاد شده

مقدمه

0.2 NET.ASP رازهاي زیادي دارد، که وقتی این رازها فاش شوند به شما کارایی و بهره وري بزرگی را عطا می کنند. براي مثال، تنگناهاي پنهانی در

عضویت و تامین profile وجود دارد که به راحتی با دادن اعتبار(authentication (و اختیار(authorization (قابل حل است. بعلاوه، خط مشی

HTTP NET.ASP می تواند به منظور اجتناب از اجراي کدهاي غیر ضروري که به ازاي هر درخواستی اجرا می شوند، تنظیم شوند. علاوه بر اینها،

پردازشگر NET.ASP براي از بین بردن افت کارایی می تواند محدودیت هایش را وارد کند. کش کردن (cache (خروجی تکه هاي صفحه در مرورگر (نه

در سرور) می تواند مقدار زیادي از زمان دانلود اطلاعات در دفعات تکراري را کاهش دهد. با توجه کردن به عمل بار شدن واسط کاربري، سایت شما می تواند

سرعت و کارایی بالاتري را داشته باشد. در نهایت، شبکه هاي تحویل محتوا (CDN (و استفاده درست از سرتیترهاي کش HTTP می تواند سرعت سایت

شما را شدیداً افزایش دهد. در این مقاله، شما این تکنیک ها را یاد خواهید گرفت که به برنامه ي NET.ASP شما کارایی و بهره وري بالایی را ارائه می

دهد.

در این مقاله ما در مورد تکنیک هاي زیر بحث می کنیم:

• بهینه سازي خطی مشی NET.ASP

• بهینه سازي پیکریندي پردازش NET.ASP

• اعمالی که شما قبل از قرار دادن کد در سرور باید قرار دهید

• شبکه ي تحویل محتوا (Network Delivery Content(

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

• بهترین استفاده از کش مرورگر

• بهینه کردن زمان بار شدن واسط کاربري به منظور تجربه ي سرعت

ASP.NET در Profile Provider سازي بهینه•

• طریقه ي جستجو در جداول عضویت NET.ASP بدون خارج کردن سایت از سرور

• جلوگیري از حمله ي انکار سرویس (DOS(

تکنیک هاي بالا می تواند در هر وب سایت NET.ASP پیاده سازي شود، به ویژه تکنیک هایی که از عضویت و فراهم آورنده ي Profile ،در

NET.ASP استفاده می کنند.

 ASP.NET Pipeline سازي بهینه

چندین HttpModules پیش فرض در NET.ASP وجود دارند که در pipline درخواست و استراق سمع آن قرار می گیرد. براي مثال،

SessionStateModule هر درخواستی را استراق سمع می کند، که شامل تجزیه ي کوکی جلسه (session (و سپس بار کردن جلسه ي درست در

HttpContext می باشد. همه ي این ماژول ها همیشه نیاز نمی باشد. براي مثال، اگر شما از سیستم هاي فراهم کننده ي Profile و عضویت استفاده

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

telegram channel   jazbe modir

نمی کنید، به ماژول FormsAuthentication نیاز ندارید. اگر شما از WindowsAuthentication براي کاربرانتان استفاده نمی کنید، شما به

ماژول WindowsAuthentication نیاز ندارید. اجراي برخی از کدهاي غیر ضروري به ازاي هر درخواست، فقط در pipeline قرار می گیرد.

ماژول هاي پیش فرض در فایل config.machine تعریف شده است.

 ($WINDOWS$\Microsoft.NET\Framework\$VERSION$\CONFIG :دارد قرار زیر مسیر در(

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

پیکربندي بالا براي سایت هایی که از پایگاه هاي داده ي مبتنی بر تصدیق فرم استفاده می کنند و به حمایت از Session نیاز ندارند، مناسب می باشد.

بنابراین، همه ي این ماژول ها می تواند کاملاً امن حذف شوند.

بهینه سازي پیکربندي پردازش NET.ASP

پیکربندي مدل پردازش NET.ASP برخی ویژگی هاي سطح پردازه را تعریف می کند، مانند تعداد نخ هاي مورد استفاده توسط NET.ASP ،طول بلوك

هاي نخ قبل از فرارسیدن زمان پایان (timeout ،(تعدادهاي منتظر براي تکمیل عمل ورودي/خروجی و غیره. پیکربندي پیش فرض در بسیاري موقعیت ها

داراي محدودیت است. امروزه سخت افزار تقریباً ارزان شده است و یک Core Dual CPU به همراه سرورهاي RAM Gigabyte انتخاب رایجی شده

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

بهتري را در هر سرور ایجاد کند.

یک برنامه ي معمولی NET.ASP فایل config.machine را با کد پیکربندي زیر شروع می کند:

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

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

شما احتیاج به بهبود این پیکربندي اتوماتیک دارید و از برخی مقادیر ویژه براي صفت هاي متفاوت به منظور تنظیم شیوه ي کار پروسس NET.ASP

نیازمندهستید. براي مثال:

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

در بالا تمام مقادیر به جز مقادیر زیر، همان مقادیر پیش فرض هستند:

• maxWorkerThreads– مقدار پیش فرض آن 20 عدد به ازاي هر پردازش است. در یک کامپیوتر دو هسته اي، 40 نخ براي پردازش

NET.ASP اختصاص داده می شود. این موضوع به این معنی است که NET.ASP به 40 درخواست به طور موازي می تواند پاسخ دهد. من

این عدد را به100 افزایش دادم تا به NET.ASP نخ هاي بیشتري به ازاي هر پردازش اختصاص بدهم. اگر شما برنامه اي دارید که به بیشتر

از این مقدار درخواست نیازمند است به راحتی می توانید آنرا افزایش دهید. به ویژه اگر برنامه ي وب شما از فراخوانی هاي وب سرویس زیاد یا

آپلود/دانلود زیاد اطلاعات استفاده می کند که فشار زیادي به CPU هم وارد نمی کند، بهتر است که این مقدار را تغییر دهید. وقتی

NET.ASP به آخر کار نخ هاي خود می رسد، از این به بعد از دریافت درخواست هاي رسیده جلوگیري می کند. درخواست ها وارد یک صف

می شوند و تا زمانی که نخ کارگر آزاد شود در آن باقی می ماند. این مورد زمانی اتفاق می افتد که شما درخواست هاي بیشتري نسبت به مقدار

تعیین شده دریافت کنید. در این موقعیت، اگر شما یک CPU اظافی داشته باشید، به ازاي هر پردازش مقدار نخ هاي کارگر را افزایش دهید.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

maxIOThreads– مقدار پیش فرض آن 20 عدد به ازاي هر پردازش است. در یک کامپیوتر دو هسته اي، 40 نخ به NET.ASP براي

انجام عملیات ورودي/خروجی اختصاص می یابد و به معنی آن است که NET.ASP به طور موازي قابلیت پردازش 40 عمل ورودي/خروجی

به صورت همزمان را دارد. درخواست هاي ورودي/خروجی می تواند شامل خواندن/نوشتن روي فایل، عملیات هاي مربوط به پایگاه داده،

فراخوانی هاي وب سرویس، درخواست هاي HTTP اي که از درون برنامه ي وب مدیریت می شوند، و غیره. بنابراین، شما می توانید این

مقدار را به 100 افزایش دهید البته در صورتی که شما منابع سیستمی کافی براي انجام هر چه بیشتر این دستورات در اختیار دارید. به ویژه وقتی

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

• minWorkerThreads– وقتی تعداد نخ هاي کارگر آزاد NET.ASP از این مقدار کمتر شود، NET.ASP شروع به وارد کردن

درخواست ها به صف می کند. بنابراین، شما می توانید این مقدار را با عدد کوچکی منتصب کنید تا میزان رسیدگی به درخواست هاي همزمان را

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

زمینه و موازي داشته باشد، تا بتواند تعدادي از نخ هاي کارگر را آزاد کند.

• minIOThreads– درست مانند minWorkerThreads است اما این گزینه براي نخ هاي ورودي/خروجی است. در هر حال، شما می

تواند آنرا به مقادیري کمتر از minWorkerThreads تنظیم کنید زیرا در هنگام انجام اعمال ورودي/خروجی هیچ مشکلی با پردازش موازي

وجود ندارد.

• memoryLimit– تعیین کننده ي میزان حداکثر اندازه ي حافظه مجاز است، که به عنوان درصدي از حافظه ي کل سیستم بیان می شود، که

یک پردازش کارگر می تواند آنرا قبل از ملاقات NET.ASP با پردازش هاي جدیدمصرف کند و درخواست هاي موجود را دوباره انتصاب کند.

اگر برنامه وب شما در یک بسته ي اختصاصی در حال اجراست و هیچ پردازش دیگري که نیاز به RAM داشته باشد، وجود نداشته باشد، شما

می توانید مقدار بالاي 80 را به آن نسبت دهید. به هر حال، اگر شما یک برنامه ي نامتراکم را دارید که مکرراً به حافظه نفوذ می کند( leak

memory ،(بهتر است تا این متغیر را با مقدار کمتري تنظیم کنید زیرا پردازش نامتراکم به راحتی و قبل از اینکه به یک برنامه ي مصرف کننده

زیاد حافظه ي تبدیل شود، قابل بازیافت است و بنابراین سایت شما را سلامت نگهمی دارد. به ویژه وقتی شما از کامپوننت هاي COM و

حافظه ي نامتراکم استفاده می کنید این مورد بیشتر خود را نشان می دهد. به هر حال، این یک راه حل موقتی است و شما نیاز به تعمیر نفوذ

هستید.(memory leak در واقع بهمعنی نشت حافظه است).

علاوه بر processModel ،بخش هاي مهم دیگري با استفاده از net.system وجود دارند که شما می توانید با استفاده از آنها تعداد ماکزیمم درخواست

هاي خارج از محدوده (outbound (را می توانید تعیین کنید که می تواند براي تولید یک IP تکی مورد استفاده قرار گیرد.

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

مقدار پیش فرض عدد2 است، که مقدار بسیار کمی است و به معنی آن است که شما بیشتر از 2 اتصال همزمان به یک IP از برنامه ي وب نمی تواند ایجاد

کنید. سایت هایی کهمحتواي خارجی را دریافت می کنند از تراکم (congestion (به خاطر این تنظیمات پیش فرض بسیار رنج می برند. در بالا من این

مقدار را به 100 افزایش داده ام. اگر برنامه ي وب شما فراخوانی هاي بسیاري را به سرور معینی انجام می دهد، شما حتی می توانید این متغیر را با مقدار

بالاتري تنظیم کنید.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

اعمالی که شما قبل از قرار دادن کد در سرور باید قرار دهید

قبل از قرار دادن برنامه ي شما در سرور، اگر شما از سیستم عضویت NET.ASP استفاده می کنید، باید بهبودهایی را در فایل config.web انجام دهید:

• صفت applicationname را به Profile اظافه کنید. اگر شما نام معینی را در اینجا به آن نسبت ندهید، Provider Profile از GUID

استفاده می کند. بنابراین، در ماشین محلی شما یک GUID دارید و در سرور تولید کننده GUID دیگري را در اختیار دارید. اگر شما پایگاه

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

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

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

• هرگاه که درخواست صفحه اي کامل شود، Provider Profile به طور اتوماتیک profile را ذخیره می کند. به هر حال، این کار ممکن است

باعث انجام عمل UPDATE غیر ضروري اي در پایگاه داده ي شما شود که خطاي کارایی مهمی به شمار می رود. بنابراین، ذخیره ي

اتوماتیک را با دستور زیر غیر فعال کرده و آنرا مستقیماً از کد خود و با استفاده از ;()Save.Profile انجام دهید.

<profile enabled="true" automaticSaveEnabled="false" >

• مدیر فرامین (Manager Role (همواره در پایگاه به منظور دریافت فرامین کاربران جستجو می کند. این کار خطاي کارایی مهمی است. شما با

اجازه دادن به مدیر فرامین به منظور کش کردن اطلاعات فرمان در یک کوکی، می توانید از این کار جلوگیري کنید. اما این مورد براي کاربرانی

کار می کند که فرامین زیادي براي انتساب به آنها نداریم که این مقدار هم از محدودیت 2KB اندازه ي کوکی ها تجاوز می کند. اما این کار

سناریو رایجی نیست. بنابراین، شما به ازاي هر درخواست به صفحات aspx *.و asmx *.به طور امن می توانید اطلاعات فرمان را در کوکی

ذخیره کنید و در هنگام بازگشت در پایگاه داده ذخیره کنید.

<roleManager enabled="true" cacheRolesInCookie="true" >

سه تنظیم بالا ضروریاتی براي وب سایت هاي سطح بالا به شمار می رود.

شبکه ي تحویل محتوا (CDN (

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

یک درخواست باید طی کند تا به سرور شما برسد، عامل کاهش سرعت همین است. براي مثال، اگر شما سروري در آمریکا داشته باشید و کسی در استرالیا

سایت شما را مشاهده کند، هر درخواست کل سیاره را از جایی تا جاي دیگر به منظور رسیدن به سرور شما حرکت می کند و دوباره به سمت مرورگر بازمی

گردد. اگر صفحه شما شامل تعداد زیادي فایل هاي ایستا نظیر تصاویر، CSS ،JavaScript باشد، فرستادن درخواست براي هر یک از آنها و دانلود آنها در

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

کنید (redirect ،(سپس هر درخواست جزئی از زمان صرف شده براي رسیدن به آمریکا را صرف خواهد کرد. نه تنها زمان بیکاري کاهش خواهد یافت بلکه

نرخ انتقال داده سریعتر خواهد شد و بنابراین محتواي ایستا با سرعت بیشتري دانلود خواهد شد. اگر وب سایت شما داراي محتواي ایستا زیادي است، این کار

بهبود کارایی مهمی را در طرف کاربر به ما خواهد داد. علاوه بر این، ISPها سرعت بسیار بالاتري را براي شبکه ي وسیع کشور در مقایسه با اینترنت فراهم

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

می آورند، زیرا هر کشور ارتباط مفیدي با ستون فقرات اینترنت دارد که به وسیله ي همه ي ISPها در کشور به اشتراك گذاشته شده است. به عنوان نتیجه

اي، کاربرانی که داراي پهناي باند4 مگا بایت در هر ثانیه می باشند تمام این سرعت را از سرورهایی که در همان کشور قرار دارند دریافت می کنند. اما داده

ها را به کندي 512 کیلو بایت در هر ثانیه از سرورهاي که در خارج از کشور قرار دارند دریافت می کند. بنابراین قرار دادن سرور در همان کشور می تواند به

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

علاوه بر بهبود سرعت بار شدن سایت، CDN همچنین ترافیک را از سرورهاي وب شما برمی دارد. زمانی که CDN با محتواهاي کش شدنی ایستا کار

می کند، وب سرورهاي شما به ندرت در معرض استفاده از این محتواهاي ایستا قرار می گیرند. بنابراین نیازها به سمت وب سرورهاي شما حرکت می کند و

وب سرورها منابع بیشتري را براي پردازش درخواست هاي پویا آزاد می کنند. وب سرورهاي شما همچنین فضاي زیادي را براي ذخیره ي گزارشات (log (

IIS صرف می کند، زیرا IIS نیازي به ثبت درخواست هاي محتواي ایستا ندارد. اگر شما تصاویر زیادي در اختیار دارید - CSS و JavaScrip در سایت

خود – شما می توانید هر روز به میزان چندین گیگا بایت در گزارشات IIS صرفه جویی کنید.

 

شکل بالا میانگین زمان پاسخگویی به درخواست براي سایت /com.pageflakes.www://http را از شهر واشینگتون نشان می دهد، که سرورهاي

این سایت در شهرهاي دالاس و تگزاس است. میانگین زمان پاسخگویی به درخواست تقریباً 4.0 ثانیه می باشد. این زمان شامل زمان اجراي سمت سرور نیز

می شود. به طور کلی تقریباً بین 3.0 تا 35.0 ثانیه براي اجراي صفحه در سرور نیاز است. بنابراین، زمان صرف شده در شبکه تقریباً 05.0 ثانیه یا 50 میلی

ثانیه می باشد. این ارتباط واقعاً ارتباط سریعی است چون فقط 4 یا 6 پرش براي رسیدن به دالاس از واشینگتون دي سی نیاز است.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

این شکل میانگین زمان پاسخگویی از سیدنی استرالیا را نشان می دهد. میانگین زمان پاسخگویی 5.1 ثانیه است که مشخصاً از زمان صرف شده در

واشینگتون دي سی بیشتر است. این شکل تقریباً 4 بار با آمریکا مقایسه شده است. تقریباً 2.1 ثانیه براي overhead در شبکه زمان صرف شده است. علاوه

بر این، بین 17 تا 23 پرش از سیدنی به دالاس نیاز است. بنابراین، دانلود سایت در استرالیا حداقل 4 برابر کندتر از هر جاي دیگري در آمریکا است.

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

محتواهاي چند رسانه اي بزرگ) به کاربر نهایی با هم همکاري می کنند. گره هاي CDN) کلاستر سرورها در یک مکان معین) در مکان هاي چندگانه و

اغلب روي ستون فقرات هاي چندگانه، گسترش پیدا می کنند. این گره ها به منظور رسیدگی به درخواست هاي کاربر براي محتوا، با هم همکاري می کنند.

آنها همچنین محتوا را در پشت صحنه و به منظور بهینه کردن پروسس تحویل محتوا حرکت می دهند. CND به درخواست ها با انتخاب نزدیکترین سرور

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

کشورهاي مختلف و تعداد ارتباط مستحکم اظافی که یک CDN در اختیار دارد قدرت آنرا نشان می دهد. برخی از عمومی ترین CDN ها Akamai،

Limelight ،EdgeCast می باشند. Akamai به وسیله ي تعداد زیادي از شرکت ها همچون مایکروسافت، یاهو، AOL مورد استفاده قرار می گیرد.

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

بزرگی در جهان در اختیار دارد. به هر حال، Akamai بسیار گران است و آنها فقط مشتریانی را می پذیرند که حداقل 5K براي CDN و به طور ماهیانه

پرداخت کنند. براي شرکت هاي کوچک، EdgeCast راه حل منطقی تري است.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

این شکل گره هاي CDN را نشان می دهد که به قطع ترافیک مرورگر و پاسخگویی سرورها شبیه می باشد. اگر پاسخی در کش وجود نداشته باشد، شبکه

آنرا از سرور اصلی با استفاده از مسیرهاي سریعتر دریافت می کند و بهینه سازي بیشتري را در اتصال نسبت به سرعتی که ISP مرورگر در اختیار ما قرار می

دهد، به ما ارائه می کند. اگر محتواهم اکنون کش شده باشد، سپس مستقیماً توسط گره رسیدگی می شود و هیچ درخواستی به سرور اصلی نمی آید.

به طور کلی دو نوع CDN وجود دارد. یکی جایی که شما محتوا را به سرورهاي CDN به وسیله ي FTP آپلود می کنید و زیردامنه اي مانند

net.somecdn.dropthings در دامنه ي خود دریافت می کنید. شما همه ي آدرس هاي محتواهاي ایستاي سایتتان را براي دانلود محتوا از دامنه

CDN به جاي دانلود از دامنه ي خود تغییر می دهید. بنابراین آدرسی مانند gif.logo /به gif.logo/net.somecdn.dropthings://http تغییر

نام می دهد. پیکربندي این کار ساده است اما از لحاظ مسائل نگهداري مشکل دارد. شما باید همواره منبع CDN را با فایل هایی در همه ي زمان ها، نگه

داري کنید. گسترش پیچیده تر خواهد شد زیرا شما احتیاج به بروز شدن سایتتان و منبع CDN در یک زمان دارید. مثالی از چنین CDN اي که بسیار

ارزان نیز می باشد Cachefly است.

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

هایی نگه داري کنید که به دامنه ي خودتان اشاره می کند مانند com.dropthings.static .سپس شما از CNAME براي نگاشت آن زیردامنه به یک

سرور CDN مانند net.somecdn.cache استفاده می کنید. وقتی مرورگر تلاش می کند تا صفحه ي com.dropthings.static را نمایش دهد،

DNS درخواست را در سرور CDN جستجو می کند. سرور سپس IP گره اي از CDN را که به شما نزدیک ترین است را به شما بازمی گرداند و به شما

بهترین کارایی دانلود اطلاعات را می دهد. مرورگر سپس درخواست هاي فایل ها را به آن گره ي CDN می فرستد. وقتی گره ي CDN درخواست را می

بیند، چک می کند که آیا این محتوا کش شده است یا نه، اگر محتوا کش شده باشد، محتوا را مستقیماً از محل ذخیره ي خود تحویل می دهد. اگر نه،

درخواستی را به سرور شما ایجاد می کند و سپس به سرتیتر حافظه ي کش که توسط پاسخ مدیریت شده است، نگاه می کند. بر اساس سرتیتر کش تصمیم

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

خود منتظر نمی ماند. CDN روش هاي جالبی را در ستون فقرات اینترنت براي تعیین مسیر درخواست ها به سرور اصلی انجام می دهد بطوریکه مادامی که

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

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

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

براي سرور اصلی دریافت می کند. مثالی از چنین CDN اي EdgeCast می باشد.

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

مرورگر می تواند تصاویر، فایل هاي جاوااسکریپت و CSS را در هارد کاربر کش کند، او همچنین می تواند فراخوانی هاي HTTP XML را نیز اگر متد

GET باشد، کش کند. عمل کش بر اساس آدرس سایت است. وقتی آدرسی دوباره درخواست داده می شود، اگر آن همان آدرس باشد و آدرس در کامپیوتر

کش شده باشد، سپس پاسخ از کش استخراج می شود و نه از سرور. اساساً، مرورگر می تواند هر فراخوانی GET اي را کش کند و بر پایه ي آدرس اینترنتی

اطلاعات کش شده را بازگرداند. اگر شما یک فراخوانی HTTP XML را به عنوان GET HTTP ایجاد کنید و سرور سرتیترهاي ویژه اي را بازگرداند

که مرورگر را براي کش کردن پاسخ آگاه می کند، در فراخوانی هاي بعدي، پاسخ به سرعت از کش بازگردانده می شود و سپس زمان تاخیر مربوط به طی

مسیر و نیز زمان دانلود اطلاعات را کاهش می دهد.

در سایت Pageflakes ،ما وضعیت کاربران را ذخیره می کنیم، زیرا وقتی که کاربر دوباره در روزهاي بعدي از سایت دیدن می کند، کاربر بجاي صفحه ي

مربوط به سرور، صفحه ي کش شده در کش مرورگر را دریافت می کند. بنابراین بارگذاري دوم بسیار سریعتر خواهد بود. ما همچنین چندین بخش کوچک

صفحه را که در فعالیت کاربر نمایش داده می شود، را نیز کش می کنیم. وقتی کاربر دوباره همان کارها را انجام می دهد، نتیجه ي کش شده فوراً از کش

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

سرعت پاسخگویی سایت نیز بالا می باشد.

ایده ایجاد فراخوانی هاي GET HTTP است مادامی که در حال ساخت سرویس هاي وب Atlas هستیم و برخی از سرتیترهاي پاسخ HTTP ویژه را

بازمی گردانیم که به مرورگر می گوید که پاسخ را براي زمان معینی کش کند. اگر شما در طول پاسخگویی سرتیتر Expires را بازگردانید، مرورگر پاسخ

HTTP XML را کش خواهد کرد. شما به دو سرتیتر براي بازگردان به همراه پاسخی که مرورگر را براي کش کردن پاسخ راهنمایی می کند، نیاز دارید:

HTTP/1.1 200 OK

Expires: Fri, 1 Jan 2030

Cache-Control: public

این کد به مرورگر براي کش کردن پاسخ 2030 Jan دستور می دهد. وقتی که شما همان فراخوانی HTTP XML را با همان پارامتر ایجاد می کنید،

شما پاسخ کش شده را از کامپیوتر دریافت می کنید و هیچ فراخوانی اي به سرور اصلی ایجاد نخواهد شد. راه هاي پیشرفته تري براي کنترل کش کردن

پاسخ وجود دارند. براي مثال، در زیر سرتیتري قرار دارد که مرورگر را مجبور می کند تا براي 60 ثانیه عمل کش را انجام دهد، اما بعد از 60 ثانیه به سرور

متصل شده و پاسخ تازه را از آن دریافت کند. این کد همچنین از بازگرداندن پاسخ کش شده توسط پروکسی ها وقتی که کش محلی بعد از 60 ثانیه منقضی

می شود، جلوگیري می کند.

HTTP/1.1 200 OK

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

با هم چنین سرتیترهاي پاسخی را از یک فراخوانی وب سرویس NET.ASP تولید می کنیم:

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

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سرتیتر Expires به طور صحیحی تنظیم شده است. اما مشکل با control-Cache است. این متغیر نشان می دهد کهمقدار age-max برابر صفر است

که باعث می شود مرورگر هیچ نوع کش اي را انجام ندهد. اگر شما واقعاً از کش کردن می خواهید جلوگیري کنید، شما باید سرتیتر control-cache را

حذف کنید. به نظر می رسد که دقیقاً عمل مخالف آن انجام می گیرد.

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

 

باگی در 0.2 NET.ASP وجود دارد که شما نمی توانید مقدار age-max را تغییر دهید. چونکه age-max با مقدار صفر تنظیم شده است، NET.ASP

0.2 متغیر control-Cache را با عنوان خصوصی (private (تنظیم می کند زیرا دارا بودن مقدار 0=age-max به این معنی است که هیچ کشی مورد

نیاز نیست. بنابراین، هیچ راهی وجود ندارد که شما NET.ASP را مجبور به بازگرداندن سرتیتر مناسب براي کش کردن پاسخ کنید. این موضوع به خاطر

Framework AJAX NET.ASP است که باعث قطع فراخوانی ها به وب سرویس ها می شود و به طور نادرستی قبل از اجراي هر درخواست -max

age را با مقدار صفر تنظیم می کند.

الان زمانی براي یک حمله است. بعد از decompile کردن کد کلاس HttpCachePolicy) کلاس شی Cache.Response.Context ،(من کد

زیر را پیدا کردم:

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری

  • مطالب مشابه

    • توسط  kamangirnet
      با سلام و خسته نباشید. 😄
      بهترین میز کار برای کسانی که میخواهند از ویندوز مهاجرت کنن یا میز کاری میخواهند که جذاب باشه من بهشون xfce پیشنهاد میکنم.
      خودم از این میز کار استفاده میکنم.
      امکانات جالبی داره نه خیلی برای حرفه ای هاست و نه خیلی برای مبتدی هاست یک چیزی ما بین این ها کسانی که لینوکس کار میکنند میدونند چی میگم.
      اینم بگم بنده fedora استفاده میکنم،با کسانی که از نسخه های دیبیان مثل اوبونتو یا مینت استفاده میکنند کاری ندارم چون انجمن و منابع خوبی برای آموزش داره.
      کسانی که میخواهند فدورا یاد بگیرن میتونن درخواست اموزش بدن در زیر همین پست اختصاصی برای انجمن بهشون به صورت خصوصی با هزینه ی کم یا عمومی مقدماتی یادشون بدم. 💪
      درمورد توضیع های لینوکس در پست بعدی بیشتر صحبت میکنم.
      با تشکر از دوستان (:
    • توسط  owl
      باسلام با اموزش نصب میزکار gnome بر روی یونیکس با شما هستیم .
      در یونیکس کامندی خود تایپ کنید :‌
      برای مشاهده ی این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید
      بعد از تایپ کردن دستور بالا میزکار gnome نصب خواهد شد و با دستور reboot یونیکس خود را ریستارت کرده و از یونیکس با محیط گرافیکی خود لذت ببرید .
      باتشکر امیدوارم خوشتان امده باشد
    • توسط  Silent
      بنام خدا
      خب دوستان به نظرم درد سر خیلیا اینه که چطوری بعد از بالا اومدن ویندوز اون فایل مخرب یا هر برنامه ای اجرا بشه!
       
      تو این ویدیو میتونید این مطلب رو به سادگی یاد بگیرید!
      دانلود ویدیو در لینک زیر:

      برای مشاهده ی این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید
    • توسط  Moeein Seven
      مشاهده ویدیو های کدگزاری شده در یوتیوب
      برای مشاهده ی این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید
      با وارد کردن این کد  در "یوتویوب" ویدیو های کد گزاری شده
    • توسط  Moeein Seven
      معرفی سایت های دارک وب DarkWeb
       
      در این تاپیک سایت های دارک وب معرفی و ادرس آن ها با دامنه .onion برای شما عزیزان قرار داده میشود
      مسعولیت هرگونه استفاده نادرست از این وبسایت ها بر عهده کاربران است 
      موفق باشید
  • کاربران آنلاین در این صفحه   0 کاربر

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