PDA

View Full Version : سوال: بررسی پاسخهای سرور با استفاده از خروجی فایرباگ



idocsidocs
شنبه 28 خرداد 1390, 12:48 عصر
من از فایرباگ برای پاسخ سرور استفاده می کنم. لطفا بگید که کدهای زیر به چه معنی هستن؟


Keep-Alive timeout=5, max=100
Connection Keep-Alive

Accept */*

Accept-Encoding gzip, deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 115
Connection keep-alive

idocsidocs
شنبه 28 خرداد 1390, 16:43 عصر
لطفا بگید که هرکدوم از این گزینه ها چه معنایی دارن؟

eshpilen
شنبه 28 خرداد 1390, 17:43 عصر
من تا یه جاییش رو میدونم و یادمه و تا همون حد رو میگم.

keep-alive
به طرف مقابل اعلام میکنه که کانکشن رو بعد از پاسخگویی نبنده. به این شکل میشه از کانکشن برای درخواست ها و پاسخهای بعدی هم استفاده کرد و به این شکل زمان و Overhead مورد نیاز برای تبادل و توافق دوطرفه جهت برقراری اولیهء کانکشن ها کاهش پیدا میکنه.

Accept
این هدر نوع دیتایی رو که برنامه میپذیره مشخص میکنه. مثلا وقتی میگید image/png یعنی فقط تصاویر PNG بعنوان پاسخ قابل قبول هستن، وقتی میگید image/* یعنی همه نوع تصویر، و وقتی میگید */* یعنی همه نوع دیتا. البته تاجاییکه یادم بود و امیدوارم اشتباه نکرده باشم (میگن دندون اسب پیشکشی رو نمیشمارن :لبخند:)

َAccept-encoding
این هدر نوع فرمتی/الگوریتم/انکدینگی رو که برای انتقال میتونه به دیتای اصلی اعمال بشه مشخص میکنه.
مثلا با ذکر gzip, deflate داریم میگیم که دیتای فشرده شده هم قابل قبول است.
این فرمت اصلی خود دیتای اصلی نیست، بلکه فرمتی هست که معمولا برای انتقال یا ذخیره سازی روی اون اعمال میشه.

Accept-Charset
نوع کاراکترست دیتای متنی مثل plain text یا HTML رو مشخص میکنه که برنامه قادر به پذیرش اون هست یا اون رو میخواد. مثلا با ISO-8859-1,utf-8; ما داریم میگیم که انکدینگ متن یا HTML یا هرفایل متنی دیگری که میفرستی باید یا ISO-8859-1 (لاتین) باشه یا UTF8. اون اعداد پارامتر q هم میزان ترجیح دادن هر مورد رو مشخص میکنن. وب سرور اگر چند انکدینگ مختلف از یک منبع رو بتونه ارائه کنه، به این اعداد نگاه میکنه و هرکدوم که ترجیح بیشتری داشتن رو به طرف ارسال میکنه. البته اینا درصورت برقراری شرایط لازم منجمله ساپورت وب سرور و داشتن چند نسخه از یک منبع درخواست شده هست.

idocsidocs
شنبه 28 خرداد 1390, 18:07 عصر
من تا یه جاییش رو میدونم و یادمه و تا همون حد رو میگم.

keep-alive
به طرف مقابل اعلام میکنه که کانکشن رو بعد از پاسخگویی نبنده. به این شکل میشه از کانکشن برای درخواست ها و پاسخهای بعدی هم استفاده کرد و به این شکل زمان و Overhead مورد نیاز برای تبادل و توافق دوطرفه جهت برقراری اولیهء کانکشن ها کاهش پیدا میکنه.

Accept
این هدر نوع دیتایی رو که برنامه میپذیره مشخص میکنه. مثلا وقتی میگید image/png یعنی فقط تصاویر PNG بعنوان پاسخ قابل قبول هستن، وقتی میگید image/* یعنی همه نوع تصویر، و وقتی میگید */* یعنی همه نوع دیتا. البته تاجاییکه یادم بود و امیدوارم اشتباه نکرده باشم (میگن دندون اسب پیشکشی رو نمیشمارن :لبخند:)

َAccept-encoding
این هدر نوع فرمتی/الگوریتم/انکدینگی رو که برای انتقال میتونه به دیتای اصلی اعمال بشه مشخص میکنه.
مثلا با ذکر gzip, deflate داریم میگیم که دیتای فشرده شده هم قابل قبول است.
این فرمت اصلی خود دیتای اصلی نیست، بلکه فرمتی هست که معمولا برای انتقال یا ذخیره سازی روی اون اعمال میشه.

Accept-Charset
نوع کاراکترست دیتای متنی مثل plain text یا HTML رو مشخص میکنه که برنامه قادر به پذیرش اون هست یا اون رو میخواد. مثلا با ISO-8859-1,utf-8; ما داریم میگیم که انکدینگ متن یا HTML یا هرفایل متنی دیگری که میفرستی باید یا ISO-8859-1 (لاتین) باشه یا UTF8. اون اعداد پارامتر q هم میزان ترجیح دادن هر مورد رو مشخص میکنن. وب سرور اگر چند انکدینگ مختلف از یک منبع رو بتونه ارائه کنه، به این اعداد نگاه میکنه و هرکدوم که ترجیح بیشتری داشتن رو به طرف ارسال میکنه. البته اینا درصورت برقراری شرایط لازم منجمله ساپورت وب سرور و داشتن چند نسخه از یک منبع درخواست شده هست.
روبروی Connection گزینه
keep-alive هست. بغیر از این گزینه Keep-Alive هم وجود داره که روبروش عدد 115 هست. این به چه معنی هست؟

گزینه Accept-Ranges به چه معنی هست؟ روبروش bytes هست. فکر کنم این گزینه به گزینه Content-Length مربوط باشه.

Fonkilzaridos
شنبه 28 خرداد 1390, 18:24 عصر
adult dating devon cornwall
gay dating sites 100 free (http://drunkengaming.co.cc/map.html )gay dating in montgomery (http://latestmovies4all.co.cc )ts adult dating (http://webyusuf.co.cc )free passwords for adult dating sites (http://bloggerproxy.co.cc/map.html )dating adult magazine (http://ox-ax.co.cc )

eshpilen
شنبه 28 خرداد 1390, 18:36 عصر
آره وقتی مقدار هدر Connection رو keep-alive قرار میدی به معنای حفظ کانکشن هست. بقیهء جزییات رو هم نمیدونم یا یادم نیست. حالا چیکار داری با این جزییات؟ :لبخند:

Accept-Ranges هم که مقدارش تقریبا همیشه bytes هست میگه که این نرم افزار (معمولا وب سرور) امکان این رو داره که تنها قسمتهایی از یک فایل/دیتا رو که با واحد بایت مشخص میشه (در هدرهای درخواست باید مشخص بشه) ارسال کنه. مثلا شما میگی از بایت فلان تا فلان بایت رو بده و سرور بهت اون قسمت فایل رو ارسال میکنه. این دقیقا همون مکانیزمی هست که دانلودرها باهاش میتونن قسمتهای مختلف یک فایل رو از چند کانکشن بصورت همزمان دریافت کنن (البته این معمولا یک نوع سوء استفاده از این قابلیت هست) و یا موقعی که دانلود قطع میشه میتونن بعدا دانلود رو از جایی که قطع شده بود ادامه بدن. درواقع اونا بسادگی یک درخواست برای بایتهایی که دانلود نکردن میدن. بنابراین از سرورهای یا برنامه هایی که این ویژگی رو ساپورت نمیکنن نمیشه اینطور همزمان بخشهای مختلف رو دانلود کرد و یا دانلود رو بعد از قطع شدن بعدا از مکان قبلی ادامه داد. البته اگر این هدر و روش تفسیر و پاسخگویی به اون رو در یک برنامهء PHP هم پیاده سازی کنید دقیقا میشه همین ویژگی رو به برنامه های PHP هم اضافه کرد. یعنی میشه توسط برنامه های دانلودر همزمان چند قسمت یک فایل (یا بطور کلی دیتا رو که ممکنه on the fly تولید یا از دیتابیس واکشی شده باشه) رو دانلود کرد یا دانلود قطع شده رو از جای قبلی ادامه داد.

idocsidocs
شنبه 28 خرداد 1390, 19:11 عصر
آره وقتی مقدار هدر Connection رو keep-alive قرار میدی به معنای حفظ کانکشن هست. بقیهء جزییات رو هم نمیدونم یا یادم نیست. حالا چیکار داری با این جزییات؟ :لبخند:

Accept-Ranges هم که مقدارش تقریبا همیشه bytes هست میگه که این نرم افزار (معمولا وب سرور) امکان این رو داره که تنها قسمتهایی از یک فایل/دیتا رو که با واحد بایت مشخص میشه (در هدرهای درخواست باید مشخص بشه) ارسال کنه. مثلا شما میگی از بایت فلان تا فلان بایت رو بده و سرور بهت اون قسمت فایل رو ارسال میکنه. این دقیقا همون مکانیزمی هست که دانلودرها باهاش میتونن قسمتهای مختلف یک فایل رو از چند کانکشن بصورت همزمان دریافت کنن (البته این معمولا یک نوع سوء استفاده از این قابلیت هست) و یا موقعی که دانلود قطع میشه میتونن بعدا دانلود رو از جایی که قطع شده بود ادامه بدن. درواقع اونا بسادگی یک درخواست برای بایتهایی که دانلود نکردن میدن. بنابراین از سرورهای یا برنامه هایی که این ویژگی رو ساپورت نمیکنن نمیشه اینطور همزمان بخشهای مختلف رو دانلود کرد و یا دانلود رو بعد از قطع شدن بعدا از مکان قبلی ادامه داد. البته اگر این هدر و روش تفسیر و پاسخگویی به اون رو در یک برنامهء PHP هم پیاده سازی کنید دقیقا میشه همین ویژگی رو به برنامه های PHP هم اضافه کرد. یعنی میشه توسط برنامه های دانلودر همزمان چند قسمت یک فایل (یا بطور کلی دیتا رو که ممکنه on the fly تولید یا از دیتابیس واکشی شده باشه) رو دانلود کرد یا دانلود قطع شده رو از جای قبلی ادامه داد.
این کدها به چه معنی هستن؟

Last Modified Sat Jun 18 2011 18:34:58 GMT+0430 (Afghanistan Standard Time)
Last Fetched Sat Jun 18 2011 19:30:32 GMT+0430 (Afghanistan Standard Time)
Expires Sat Jun 25 2011 18:34:56 GMT+0430 (Afghanistan Standard Time)
Data Size 14076
Fetch Count 3485
Device disk

eshpilen
شنبه 28 خرداد 1390, 21:03 عصر
گرفتی ما رو؟
بیخیال دیگه خسته شدم.
اولی و سومی مربوط به تاریخ آخرین ویرایش و تاریخ انقضای تعیین شده و اینا میشه. بقیش رو هم نمیدونم.
یه تیکه دو تیکه میپرسن، دیگه کل پروتکل HTTP رو که تیکه تیکه نمیپرسن :متعجب:

idocsidocs
شنبه 28 خرداد 1390, 21:34 عصر
گرفتی ما رو؟
بیخیال دیگه خسته شدم.
اولی و سومی مربوط به تاریخ آخرین ویرایش و تاریخ انقضای تعیین شده و اینا میشه. بقیش رو هم نمیدونم.
یه تیکه دو تیکه میپرسن، دیگه کل پروتکل HTTP رو که تیکه تیکه نمیپرسن :متعجب:
مرسی از شما.

سایر دوستان نمی دونن که این گزینه ها به چه معنی هستن؟
گزينه Last Fetched و گزينه Fetch Count به چه معني هستن و چرا تاريخ Last Fetched برابر با تاريخ Last Modified هست؟ لطفا توضیح بدید.

Last Modified Sat Jun 18 2011 18:34:58 GMT+0430 (Afghanistan Standard Time)
Last Fetched Sat Jun 18 2011 19:30:32 GMT+0430 (Afghanistan Standard Time)
Expires Sat Jun 25 2011 18:34:56 GMT+0430 (Afghanistan Standard Time)
Data Size 14076
Fetch Count 3485
Device disk

idocsidocs
دوشنبه 30 خرداد 1390, 16:01 عصر
مرسی از شما.

سایر دوستان نمی دونن که این گزینه ها به چه معنی هستن؟
گزينه Last Fetched و گزينه Fetch Count به چه معني هستن و چرا تاريخ Last Fetched برابر با تاريخ Last Modified هست؟ لطفا توضیح بدید.

Last Modified Sat Jun 18 2011 18:34:58 GMT+0430 (Afghanistan Standard Time)
Last Fetched Sat Jun 18 2011 19:30:32 GMT+0430 (Afghanistan Standard Time)
Expires Sat Jun 25 2011 18:34:56 GMT+0430 (Afghanistan Standard Time)
Data Size 14076
Fetch Count 3485
Device disk
کسی از دوستان نمی دونه که گزینه های Last Fetched و Fetch Count به چه معنی هستن؟

eshpilen
دوشنبه 30 خرداد 1390, 23:31 عصر
از کجا گرفتی اینا رو حالا؟
نرم افزارهای مختلف و پراکسی ها و کش سرورها ممکنه هدرهای سفارشی خودشون رو اضافه کنن. این هدرها میتونن فقط مقاصد اطلاعاتی داشته باشن و میتونن به منظور دیگر توسط سیستمها و نرم افزارهای مربوط به خودشون استفاده بشن.

idocsidocs
سه شنبه 31 خرداد 1390, 00:08 صبح
از کجا گرفتی اینا رو حالا؟
نرم افزارهای مختلف و پراکسی ها و کش سرورها ممکنه هدرهای سفارشی خودشون رو اضافه کنن. این هدرها میتونن فقط مقاصد اطلاعاتی داشته باشن و میتونن به منظور دیگر توسط سیستمها و نرم افزارهای مربوط به خودشون استفاده بشن.
من از فایرباگ استفاده می کنم.

منظورتون اینه که این بخش از خروجی فایرباگ جز پروتکل http نیست؟

eshpilen
سه شنبه 31 خرداد 1390, 08:26 صبح
من از فایرباگ استفاده می کنم.
منظورم سرور و سایتی بود که این هدرها براش برگردونده شدن.


منظورتون اینه که این بخش از خروجی فایرباگ جز پروتکل http نیست؟
بله به احتمال زیاد.
خودتم یه جستجو در RFC 2616 (http://www.ietf.org/rfc/rfc2616.txt) بکن.
مثلا اصلا هدری بنام Fetched هم توش وجود نداره.

idocsidocs
سه شنبه 31 خرداد 1390, 11:30 صبح
منظورم سرور و سایتی بود که این هدرها براش برگردونده شدن.


بله به احتمال زیاد.
خودتم یه جستجو در RFC 2616 (http://www.ietf.org/rfc/rfc2616.txt) بکن.
مثلا اصلا هدری بنام Fetched هم توش وجود نداره.
می شه بگید که کار Last Modified چی هست؟

اونطور که توی توضیحات نوشته شده، کار این گزینه نمایش دادن زمان آخرین تغییرات هست. ولی ظاهرا این گزینه زمان آخرین دسترسی به فایل و فراخوانی فایل از سرور رو نمایش می ده.

من فکر می کردم که اگه مدیر سایت محتویات فایل رو ویرایش کنه، این گزینه تغییر می کنه ولی ظاهرا اینطور نیست.

eshpilen
سه شنبه 31 خرداد 1390, 12:24 عصر
Last Modified تاریخ آخرین تغییرات دیتا رو نشون میده. درمورد فایلهای استاتیک میشه گفت این تاریخ همون تاریخی هست که فایل آخرین بار ویرایش شده و نرم افزار سرویس دهندهء وب میتونه تاریخ آخرین ویرایش فایل مورد نظر رو از سیستم فایل سرور بخونه و ارسال کنه (بنظرم این قابل پیکربندی هست که این کار رو بکنه یا نکنه و بر چه اساسی زمان رو تولید کنه و شاید حتی مسائل امنیتی هم در این امر تاثیر بذارن)، اما مثلا درمورد یک اسکریپت PHP منطقی نیست این زمان رو برابر زمان ویرایش خود فایل PHP قرار بده، چون دیتایی که ارسال میشه محتویات خود فایل PHP نیست، بلکه این دیتا میتونه از دیتابیس بیاد، میتونه On the fly تولید شده باشه و غیره و وب سرور هم نمیتونه با اطمینان بفهمه باید تاریخ آخرین تغییرات این دیتا رو چه زمانی تعیین بکنه و اصولا این کار رو باید به عهدهء خود اون برنامه ای که محتویات رو تولید میکنه و به وب سرور تحویل میده بذاره.
پس بنابراین تعیین این هدر درمورد دیتای دینامیک سمت سرور معمولا برعهدهء برنامه نویس هست. البته اگر بخواد بعلتی این هدر رو تعیین بکنه. اگر تعیین نکنه این هدر اصلا ممکنه در پاسخ وجود نداشته باشه و ارسال نشه. شاید هم وب سروری طوری پیکربندی شده باشه که درصورتی که مثلا یک برنامهء PHP خودش این هدر رو تعیین نکرد، این هدر رو با زمان تعیین شده برابر زمان درخواست تولید کنه.

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

idocsidocs
سه شنبه 31 خرداد 1390, 14:13 عصر
Last Modified تاریخ آخرین تغییرات دیتا رو نشون میده. درمورد فایلهای استاتیک میشه گفت این تاریخ همون تاریخی هست که فایل آخرین بار ویرایش شده و نرم افزار سرویس دهندهء وب میتونه تاریخ آخرین ویرایش فایل مورد نظر رو از سیستم فایل سرور بخونه و ارسال کنه (بنظرم این قابل پیکربندی هست که این کار رو بکنه یا نکنه و بر چه اساسی زمان رو تولید کنه و شاید حتی مسائل امنیتی هم در این امر تاثیر بذارن)، اما مثلا درمورد یک اسکریپت PHP منطقی نیست این زمان رو برابر زمان ویرایش خود فایل PHP قرار بده، چون دیتایی که ارسال میشه محتویات خود فایل PHP نیست، بلکه این دیتا میتونه از دیتابیس بیاد، میتونه On the fly تولید شده باشه و غیره و وب سرور هم نمیتونه با اطمینان بفهمه باید تاریخ آخرین تغییرات این دیتا رو چه زمانی تعیین بکنه و اصولا این کار رو باید به عهدهء خود اون برنامه ای که محتویات رو تولید میکنه و به وب سرور تحویل میده بذاره.
پس بنابراین تعیین این هدر درمورد دیتای دینامیک سمت سرور معمولا برعهدهء برنامه نویس هست. البته اگر بخواد بعلتی این هدر رو تعیین بکنه. اگر تعیین نکنه این هدر اصلا ممکنه در پاسخ وجود نداشته باشه و ارسال نشه. شاید هم وب سروری طوری پیکربندی شده باشه که درصورتی که مثلا یک برنامهء PHP خودش این هدر رو تعیین نکرد، این هدر رو با زمان تعیین شده برابر زمان درخواست تولید کنه.

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

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

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

eshpilen
سه شنبه 31 خرداد 1390, 17:26 عصر
شما اطلاعات دقیقی در مورد هدرها دارید. توی انجمن کسی رو ندیدم که مثل شما در این زمینه اطلاعات کافی داشته باشه.

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


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


در ضمن، با توجه به مهم بودن کش کردن و فشرده کردن فایلها، اگه امکانش هست کدهایی که برای این کار استفاده می کنید رو در این پست قرار بدید.
تاحالا روی کش و فشرده سازی کار عملی خاصی نکردم جز مطالعات تئوریک و بعضی تست های محدود.
در زمینهء Caching در PHP هم فقط هرجا کش شدن باعث مشکل موقع تست و توسعه و/یا استفاده میشه از یکسری هدرهای ضدکش استفاده میکنم که قبلا هم درج کرده بودم:

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: private, no-store, no-cache, must-revalidate, post-check=0, pre-check=0, max-age=0");
header('Pragma: private');
header("Pragma: no-cache");
البته اینا صرفا هرچیزی که خلاف کش عمل میکرده بودن که همه رو چپوندم با هم :لبخند:
ممکنه فقط یکی دوتاش کافی باشه، ولی حالا همش رو هم استفاده کرده نباید ضرری داشته باشه و میگن کار از محکم کاری عیب نمیکنه :بامزه:

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