PDA

View Full Version : سوال: برای حل نواقصی که سایت webpagetest مشخص کرده باید چیکار کنم؟



idocsidocs
شنبه 01 تیر 1392, 00:39 صبح
من سایتم رو توی webpagetest تست کردم و این مشکلات رو نمایش داد:

1- با وجودی که از کد زیر استفاده می کنم اما فایلهای css و html رو فشرده نکرده:

# BEGIN Compress text files
<ifModule mod_deflate.c>
<filesMatch "\.(css|js|php|x?html?)$">
SetOutputFilter DEFLATE
</filesMatch>
</ifModule>
# END Compress text files



FAILED - (16.7 KB, compressed = 3.4 KB - savings of 13.4 KB) - http://www.site.com/css.css
FAILED - (12.6 KB, compressed = 3.6 KB - savings of 8.9 KB) - http://www.site.com/

2- همچنین طبق اطلاعاتی که نمایش داده شده keep alive قعال نیست، چطور می تونم keep alive رو فعال کنم؟

3- و اینکه چرا برای First Byte Time هشدار داده؟ چطور می تونم First Byte Time رو بهینه سازی کنم؟

920 ms First Byte Time
807 ms Target First Byte Time

idocsidocs
سه شنبه 04 تیر 1392, 18:19 عصر
از دوستان کسی هست که در این مورد اطلاعاتی داشته باشه؟

Javidhb
سه شنبه 04 تیر 1392, 18:52 عصر
1. ظاهرا که کد درسته...


2. باید header رو توی فایل php تعریف کنید: wikipedia (http://en.wikipedia.org/wiki/HTTP_persistent_connection)


header("Connection: keep-alive");



3. تا حدودی برمیگرده به همون سوال اولتون.. اگه فایلهای css , js تون حجیم هستن.. بدون فشرده سازی توی سرعت تاثیر منفی میزاره.
و البته میتونه بخاطر دیر جواب دادن سرور، کد های php هم باشه... اما اگه مشکل فشرده کردن فایلها رو حل کنی اینم حله :چشمک:

idocsidocs
چهارشنبه 05 تیر 1392, 01:01 صبح
بنظرتون این پیام چه معنی داره؟

FAILED - (16.7 KB, compressed = 3.4 KB - savings of 13.4 KB) - http://www.site.com/css.css
FAILED - (12.6 KB, compressed = 3.6 KB - savings of 8.9 KB) - http://www.site.com/
اگر منظور از پیام اینه که فایلها فشرده شدن چرا ابتدای پیام FAILED گذاشته شده؟

colors
چهارشنبه 05 تیر 1392, 10:52 صبح
منظور از فشرده سازی فایلهای CSS, بهینه کردن کدهاش هست. یعنی به جای margin: 10px 15px 10px بهینه بشه به margin:10px 15px. همچنین تمامی خصوط هم پشت سرهم و بدون هیچ فضای خالی باشه

Javidhb
چهارشنبه 05 تیر 1392, 11:59 صبح
FAILED - (16.7 KB, compressed = 3.4 KB - savings of 13.4 KB) - http://www.site.com/css.css
FAILED - (12.6 KB, compressed = 3.6 KB - savings of 8.9 KB) - http://www.site.com/
اگر منظور از پیام اینه که فایلها فشرده شدن چرا ابتدای پیام FAILED گذاشته شده؟

فایل css.css شما 16 کیلوبایت که اگه فشرده بشن (که نشدن) حجمش به 3.4 کیلوبایت کاهش پیدا میکنه، یا به عبارتی 13.4 کیلوبایت صرفه جویی تو حجم خواهید داشت.


شما php_info رو روی سرورتون اجرا کنید ببینید، mod_deflate فعال هست یا نه. اگه فعال باشه.. باید کدی که تو htaccess نوشتید کار کنه.

idocsidocs
چهارشنبه 05 تیر 1392, 13:21 عصر
شما php_info رو روی سرورتون اجرا کنید ببینید، mod_deflate فعال هست یا نه. اگه فعال باشه.. باید کدی که تو htaccess نوشتید کار کنه.
این ارور نمایش داده شد!

Call to undefined function php_info()
اگر mod_deflate غیر فعال باشه بقیه فایلها هم نباید فشرده بشن در صورتیکه اینطور نیست و فقط 2 تا فایل رو فشرده نکرده. باید چیکار کرد؟ بنظرتون سرور مشکل داره؟

مسئله بعدی اینه که آیا فعال کردن keep alive مفید هست یا نه؟

colors
چهارشنبه 05 تیر 1392, 14:48 عصر
این ارور نمایش داده شد!

Call to undefined function php_info()


منظورشون phpinfo() هست

colors
چهارشنبه 05 تیر 1392, 15:07 عصر
ظاهرا این keep alive یکی از قابلیت های apache است. یعنی مرورگر وب و وب سرور یه ارتباط پایداری رو باهم برقرار میکنن. ارتباط tcp هست برای ارسال درخواست و گرفتن پاسخ http.

از مزایای خوب فعال کردن keep alive:

بالا بردن سرعت وب سایت


استفاده کمتر از CPU


ولی در حالی که میتونه مفید باشه, نیاز زیادی به RAM داره که خودش میتونه دردسر ساز باشه. البته روی سرور اختصاصی جواب میده.

Javidhb
چهارشنبه 05 تیر 1392, 16:06 عصر
colors جان درست گفتن: phpinfo() درسته..... ببخشید!
از تابع apache_get_modules (http://docs.php.net/apache_get_modules) [/URL]این هم میتونی استفاده کنی که مطمئن شی توی آپاچی، mod_deflate فعاله.
-> سایت خودم رو هم با webpagetest آنالیز کردم... دیدم که فقط به یه فایل ارور داده که فشرده نشده.. ولی بقیه فایلها هیچ مشکلی نداشتن.. زیاد خودتون درگیرش نکنید اگه مطمئنید که mode_deflate فعاله و چون کد htaccess هم درسته.. پس طبیعتا جای نگرانی نداره.

[URL="http://stackoverflow.com/questions/6583475/minify-dynamic-php-stylesheets"]اینم (http://docs.php.net/apache_get_modules)یه راه دیگه که با php فشرده سازی کنید...

موارد مناسب برای استفاده از Keep Alive طبق این صفحه (http://abdussamad.com/archives/169-Apache-optimization:-KeepAlive-On-or-Off.html) :
1)اگه RAM سرورتون زیاده، میتونید استفاده کنید.
2) اگه احتیاجه که فایلهای زیادی برای یک صفحه خونده بشن (مثل گالری عکس) استفاده بشه بهتره.
3) اگه ترافیک ورودی سایتتون در طول روز یکنواخته (یعنی پیک ترافیک در یک مدت محدود نـــدارید) بازهم اگه استفاده بشه بهتره.

idocsidocs
چهارشنبه 05 تیر 1392, 17:16 عصر
-> سایت خودم رو هم با webpagetest آنالیز کردم... دیدم که فقط به یه فایل ارور داده که فشرده نشده.. ولی بقیه فایلها هیچ مشکلی نداشتن.. زیاد خودتون درگیرش نکنید اگه مطمئنید که mode_deflate فعاله و چون کد htaccess هم درسته.. پس طبیعتا جای نگرانی نداره.
سایت webpagetest یکی از ابزارهایی هست که گوگل توصیه کرده که سرعت سایت رو با اونها تست کنیم.

حتما دلیلی داره که این ارور نمایش داده می شه و بدون دلیل نیست. با توجه به اینکه سایت خودتون رو تست کردید بنظرتون چرا بعضی از فایلها فشرده نمی شن؟


ولی در حالی که میتونه مفید باشه, نیاز زیادی به RAM داره که خودش میتونه دردسر ساز باشه. البته روی سرور اختصاصی جواب میده.
برای اینکه از این خاصیت استفاده کنیم برای سایتهایی که 1000 بازدید در روز دارن چه میزان رم نیاز هست؟

2) اگه احتیاجه که فایلهای زیادی برای یک صفحه خونده بشن (مثل گالری عکس) استفاده بشه بهتره.
تصاویر که محتوای متغیری ندارن و فکر نکنم نیاز باشه که اتصال رو برای تصاویر باز نگه داشت. بنظرم فقط برای فایلهای php باید اتصال رو باز نگه داشت.
نظر شما چیه؟

Javidhb
چهارشنبه 05 تیر 1392, 17:59 عصر
توی htaccess اول این کد رو داشتم:


<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript
</ifmodule>

که پاکش کردم و دقیقا کد شما رو کپی/پیست کردم... این دفعه که با webpagetest چک کردم تمام فایلها رو با موفقیت فشرده کرده بود.


در مورد RAM فاکتورای زیادی رو باید مد نظر داشته باشید، برای هر درخواست کاربر بین 2 الی 8 مگ(شایدم بیشتر) رم لازم هست. اگه 1000 کاربر همزمان (خیلی بعیده!) بخان وارد یک صفحه خاص بشن (که مقدار مشخصی رم برای پردازش لازم داره) بصورت تقریبی (با فرض میانگین 5 مگ)، 5گیگ رم لازم دارید!
اما چیزی که واقعا اتفاق میافته اینه که باید با توجه به تعداد کوئری ها، نوع کنترل پنل، استفاده یا عدم استفاده از Cache، سیستم عامل سرور + ترافیک RAM مناسب رو انتخاب کنید.
در مورد 1000 بازدید کننده و گردش اونا در صفحات مختلف سایتتون بنظرم(کاملا غیر کارشناسانه! چون در مورد سایتتون و ... اطلاعات ندارم!) نباید کمتر از 2 گیگ رم انتخاب کنید.



فایل PHP احتیاجی به Keep Alive نداره .. چون توی سرور پردازش میشه (توی یک یا چند ثانیه) ولی بعدش که قصد ارسال HTML و مخلفات دیگه رو به مرورگر شما داره ... اگه قرار باشه 40 تا عکس (گالری) رو از سرور به مرورگر شما بفرسته، اگه Keep Alive فعال باشه.. دیگه لازم نیست برای هر عکس و ... یک کانکشن جدا ایجاد بشه بلکه یه اتصال (بصورت دیفالت 15 ثانیه) باز میمونه تا فایلها ارسال بشن.

idocsidocs
چهارشنبه 05 تیر 1392, 18:47 عصر
اگه 1000 کاربر همزمان (خیلی بعیده!) بخان وارد یک صفحه خاص بشن
البته منظورم 1000 بازدید همزمان نبود، منظورم 1000 بازدید در روز بود.

در مورد RAM فاکتورای زیادی رو باید مد نظر داشته باشید، برای هر درخواست کاربر بین 2 الی 8 مگ(شایدم بیشتر) رم لازم هست.
چطور مشخص می شه که مصرف برای هر درخواست چقدر هست؟

فایل PHP احتیاجی به Keep Alive نداره ..
Keep Alive بصورت کلی اعمال می شه یا اینکه (به عنوان مثال) می تونیم فقط برای تصاویر ازش استفاده کنیم؟

Javidhb
چهارشنبه 05 تیر 1392, 19:09 عصر
بله، بدترین حالت رو فقط خواستم مد نظر بگیرم!


برای اطلاع از مقدار زمان اجرای اسکریپت، مقدار رم مورد مصرف، زمان اجرای کوئری و .. بهترین گزینه Xdebug هست.
من چون از فریمورک Laravel استفاده میکنم خودش profiler داره.


Keep Alive بصورت کلی بین آپاچی و مرورگر برقرار میشه. و برای انتقال همه فایلهایی که مرورگر لازم داره بترتیب درخواست مورد استفاده قرار میگیره.



مشکل فشرده نشدن فایلهاتون حل شد؟ برای من که خیلی خوب جواب داد... تا 92% همه فایلهای css و js رو فشرده کرد.

idocsidocs
یک شنبه 06 مرداد 1392, 17:42 عصر
مشکل فشرده نشدن فایلهاتون حل شد؟ برای من که خیلی خوب جواب داد... تا 92% همه فایلهای css و js رو فشرده کرد.
تابع apache_get_modules رو تست کردم ولی خروجی نداشت.
از تابع phpinfo استفاده کردم ولی متوجه نشدم که mod_deflate ، mod_expires و mod_headers فعال هستن یا نه. از خروجی این تابع چطور می شه متوجه شد که این مدها فعال هستن یا نه؟

ولی از بخش Environment این گزینه ها وجود داشت:
HTTP_ACCEPT_ENCODING: gzip, deflate
HTTP_CONNECTION: Keep-Alive
در این مورد چه نظری دارید؟

الان از طریق webpagetest یه سایت دیگه رو چک کردم و این گزینه هم مقدار F گرفته بود که یعنی باید تصاویر رو اصلاح کنم ولی معنی این گزینه رو نمی دونم، در این مورد هم لطفا توضیح بدید
Progressive JPEGs

Javidhb
یک شنبه 06 مرداد 1392, 18:52 عصر
علتش رو نمیدونم ولی تابع apache_get_modules رو local جواب میده ولی روی سرور نه!
اگه سرور اشتراکی استفاده میکنید: از این لینک (http://www.whatsmyip.org/http-compression-test/)استفاده کنید.
اگه به httpd.conf دسترسی دارید میتونی سرچ کنید ببینید که جلوی خطی که شامل mod_deflate هست، # نباشه.

در مورد Progressive Jpeg: یک متد برای فشرده سازی JPEG که اجازه میده قسمتهای دانلود شده از عکس به نمایش در بیاد و منتظر دانلود شدن کامل عکس نباشه... توضیح بیشتر (https://en.wikipedia.org/wiki/JPEG)
کافیه با یه نرم افزار مخصوص کار با عکس .. مثل ACDsee عکس رو save as کنید و توی قسمت Options روی گزینه Progressive کلیک کنید.

idocsidocs
یک شنبه 06 مرداد 1392, 19:51 عصر
اگه به httpd.conf دسترسی دارید میتونی سرچ کنید ببینید که جلوی خطی که شامل mod_deflate هست، # نباشه.
مشکل از سروره وگرنه کدها مشکلی ندارن و روی سایر سرورها بدون مشکل فشرده می شدن.

مقدار First Byte Time دقیقا چه چیزی رو مشخص می کنه؟

Javidhb
یک شنبه 06 مرداد 1392, 20:17 عصر
مقدار First Byte Time دقیقا چه چیزی رو مشخص می کنه؟

مدت زمانی که طول میکشه درخواست HTTP (از طرف کاربر) فرستاده بشه و اولین Byte به مرورگر برگرده. تمام پردازشهای سرور در بین صورت میگیره.

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

idocsidocs
یک شنبه 06 مرداد 1392, 20:45 عصر
مدت زمانی که طول میکشه درخواست HTTP (از طرف کاربر) فرستاده بشه و اولین Byte به مرورگر برگرده. تمام پردازشهای سرور در بین صورت میگیره.
در حالت استاندارد این مقدار چقدر باید باشه؟

توی سرورهای اشتراکی نمیشه برای بهبودش کاری کرد. برای سرورهای اختصاصی هم کافیه از CACHE استفاده بشه.
منظورتون از کش شدن چیه؟ توی سرور اشتراکی هم می شه کش مرورگر رو فعال کرد.

برای compression کردن تصاویر jpg باید از چه ابزاری استفاده کرد؟

Javidhb
یک شنبه 06 مرداد 1392, 20:52 عصر
در حالت استاندارد این مقدار چقدر باید باشه؟
هر چی کمتر بهتر.
زیر 100 میلی ثانیه فوق العاده است. بین 200 الی 500 برای سایتهای دینامیک عالیه و ...
بازم نسبیه و به نوع برنامه بستگی داره.


منظورتون از کش شدن چیه؟ توی سرور اشتراکی هم می شه کش مرورگر رو فعال کرد.
نه کش سمت سرور مثل APC ... لیست (http://en.wikipedia.org/wiki/List_of_PHP_accelerators)


برای compression کردن تصاویر jpg باید از چه ابزاری استفاده کرد؟
ACDsee رو چک کردم ... این امکان رو داشت.

idocsidocs
یک شنبه 06 مرداد 1392, 23:42 عصر
ابزاری برای Minify HTML سراغ ندارید؟ البته مشکل اینه که وقتی کدهای PHP رو داخل HTML قرار می دم مشکل می شه که بصورت دستی فضای خالی و فاصله رو حذف کنم.

Javidhb
سه شنبه 08 مرداد 1392, 17:59 عصر
یه بار اینجا (http://gtmetrix.com/minify-html.html)سایتت رو چک کن، اطلاعات مختصر ولی مفیدی رو میده.


ابزاری برای Minify HTML سراغ ندارید؟
http://htmlcompressor.com/compressor/

idocsidocs
پنج شنبه 07 شهریور 1392, 22:04 عصر
یه بار اینجا (http://gtmetrix.com/minify-html.html)سایتت رو چک کن، اطلاعات مختصر ولی مفیدی رو میده.


http://htmlcompressor.com/compressor/
یه سایت داشتم که ورودی خوبی از گوگل داشت و روزانه یکی دوتا مشتری با من تماس می گرفتن و داشتم روی سایت حساب می کردم و این تنظیمات رو برای همون وب سایت انجام می دادم

ولی از ماه گذشته بازدید گوگلش روز به روز کمتر می شه. دلیلش هم اینه که لینکهایی که توی صفحات اول گوگل بودن به صفحه 2 و 3 روفتن و دیگه بازدید ندارم

پر فروش ترین لینک وب سایت هم به صفحه 5 رفته!

جالب اینجاست که این سایت با کلمات کلیدی اصلی خودش هیچ تغییری نکرده و به همون صورت قبل هست ولی با بقیه کلمات افت رنک داشته!

مواردی که بنظرم باعث ایجاد مشکل شده:
حدود 40 روز قبل به مدت 3 تا 5 روز سرور سایت مشکل داشت و سایت باز نمی شد
توی چندتا از وبلاگهای بلاگفا بک لینک گذاشتم و امروز وب مستر تولز حدود 1200 بک لینک نشون داد

نظر شما چیه؟