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

چه ميكنه اين PHP.JET !!!!

....P30....

کاربر تازه وارد
تاریخ عضویت
27 جولای 2003
نوشته‌ها
1,161
لایک‌ها
8
محل سکونت
World Wide Web 8-)
آقا چه ميكنه اين PHP.JET :blink:

بعد از اضافه كردن اين كد به اول فايل Index.php ميبينيد كه به طرز محسوسي سرعت بالا اومدن سايت زياد ميشه :)

در ضمن از اينجا ميتونيد ببينيد كه حجم خروجي صفحه اول سايت من بعد افزودن اين كد چقدر كمتر شده :D

http://www.pipeboost.com/GetReport.asp?URL=http://irdown.com

توضيحات بيشتر رو در مورد اين كد ميتونيد در سايت آقا نيما بخونيد


http://phpmystery.com

راستي تا يادم نرفته اينم خود كد :

PHP:
ob_start( 'ob_gzhandler' );
 

ehsan

Administrator
مدیر انجمن
Administrator
تاریخ عضویت
5 دسامبر 2002
نوشته‌ها
7,949
لایک‌ها
3,918
محل سکونت
Internet

....P30....

کاربر تازه وارد
تاریخ عضویت
27 جولای 2003
نوشته‌ها
1,161
لایک‌ها
8
محل سکونت
World Wide Web 8-)
احسان جان پيشنهاد ميكنم از اين كد براي صفحات فروم استفاده كني
خيلي كارش عاليه
 

siavash79

کاربر تازه وارد
تاریخ عضویت
16 آپریل 2003
نوشته‌ها
47
لایک‌ها
0
كارش خوبه.... ولي بهتره با يك شرط همراه باشه... اول كنترل كنه كه اگر توي فرمت‌هاي Accept اجازه استفاده از gzip داده شده بود اين كار رو بكنه..... چون ممكنه بعضي از browser ها اين نوع خروجي رو نتونن تشخيص بدن
 

A-Parsa

کاربر تازه وارد
تاریخ عضویت
10 می 2004
نوشته‌ها
39
لایک‌ها
1
به نقل از ايميل نيما جان :

آقا لازم به
PHP:
ob_start( 'ob_gzhandler' );
نيست. اينطوري بايد بالاي هر صفحه اي كه ميخواي از اين تكنيك استفاده كنه، تايپ بشه. اگه مي خواي كه كل صفحات توليد شده توسط PHP، از اين امكان استفاده كنند، يه فايل htaccess. تو روت مي سازي و داخلش مي نويسي:
php_value zlib.output_compression 1
php_value zlib.output_compression_level 9
علي جون سطح فشرده سازي هم درجات مختلفي داره كه 9 از همه حجم رو كمتر ميكنه. صرفا يه مقداري براي ميزان فشرده سازي هست.
در ضمن اگه اين دستورالعملها رو تو فايلي كه گفتم بنويسي ديگه لازم نيست اون تابع رو بالاي اسكريپت هات فراخواني كني. اصلا ديگه هيچ تغييري تو كدها لازم نيست بدي.
البته يه سري نكته هايي هم داره مثلا اگه فايل PHP شما محتوايي بجز text/html داشته باشه، بايد اين تكنيك رو استفاده نكني.

من روش بالا رو روي سايت خودم پياده كردم و بايد بگم واقعاَ تاثير چشمگيري داشت حتي از شيوه اول هم سرعت سايت بالاتر رفت :lol: بخصوص اينكه سطح فشرده سازي عدد 9 قرار داده شده ، احتياجي به تغيير در فايلهاي سايت نيست و بسيار آسونتر هست . از نيما جان ممنون و اميدوارم مفيد بوده باشه :happy:
 

knowhow

مدیران قدیمی
تاریخ عضویت
25 دسامبر 2002
نوشته‌ها
3,478
لایک‌ها
22
فروم Gzip Enable است !
 

Persia

Registered User
تاریخ عضویت
2 نوامبر 2003
نوشته‌ها
718
لایک‌ها
20
سلام.
آقا چند تا سوال:
1- اصول اين فشرده سازي چيه؟ يعني چطوري اطلاعات يه صفحه فشرده ميشه و در عين حال کامل باقي ميمونه؟
2- فايل htaccess. فقط بايد تو Root ساخته بشه يا تو تمام فولدرهايي که فايل php در اونها وجود داره؟
3- اگه اشتباه نکنم Gzip يه قابليتيه که روي سرور بايد فعال باشه. درسته؟

ممنون
:)
 

Persia

Registered User
تاریخ عضویت
2 نوامبر 2003
نوشته‌ها
718
لایک‌ها
20
يه سوال ديگه هم دارم:
من از ام تي استفاده مي کنم و اومدم اکستنشن تمام فايلهاي آرشيو و . . . رو php کردم که بتونم از دستورات php هم استفاده کنم. اما صفحات توسط Movable Type بصورت html توليد ميشه و استاتيکه. آيا در اين حالت هم استفاده از اين تکنيکها تإثيري داره؟
 

littlerabbit

مدیر بازنشسته
کاربر فعال
تاریخ عضویت
13 جولای 2003
نوشته‌ها
678
لایک‌ها
6
سن
42
محل سکونت
Iran
اصولا OutPut Buffering علاوه بر این یه مورد خاص میتونه خیلی وقتای دیگه هم مفید باشه. البته اینم بگم که فقط همین یه تابع کافی نیست و باید در آخر یک تابع دیگه هم فراخوانی بشه در مواقعی که شما فقط از یک پشته برای این کار استفاده میکنید نیازی به فراخواندن این تابع احساس نمیشه اما در حالتی که چند تا از این پشته ها استفاده بشه بافر بایداصطلاحا خالی بشه. برای اینکار در آخر Script از تابع ob_end_flush(); باید استفاده بشه. (یا در حالت عادی بهتره که استفاده بشه)

یه مورد دیگه که میتونه OutPut Buffering مفید باشه کنترل خروجی است که به Browser میره. مثلا گاهی که از کوکی ها استفاده میکنیم و تابع SetCookie رو فراخوانی میکنیم اگه حتی یه بایت قبل از این تابع به Browser فرستاده شده باشه اونوقت تابع موفق نمیشه و یه هشدار میده. در این موارد باید حواسمون کاملا جمع باشه که اصلا هیچ چیزی رو قبل از این تابع به مرور گر نفرستیم (یعنی از دستوراتی مثل echo استفاده نکنیم یا اینکه هیچ کد Html رو قبل از این تابع نگذاریم ) که گاهی مشکله و ممکنه اشتباهی از دست آدم در بره!!! یه راه رهایی از این مشکل اینه که اول بافرینگ رو فعال کنیم (نه اینکه لزوما از ob_gzhandler برای فشرده سازی استفاده بشه کافیه که تابع به صورت ob_start() و بدون آرگومان فراخوانی بشه تا فقط بافرینگ فعال شه) بعد هر چی دلمون میخواد با هر تابعی که میخوایم به Browser بفرستیم. اینها همه تو بافر میمونه تا بالاخره تابع مربوط به کوکی رواستفاده کنیم و درست بعد از اون یا اینکه بعد از پایان کار (مهم نیست کدوم یکی مهم اینه که بعد از کار با کوکی ها باشه) تابع ob_end_flush رو فراخوانی کنیم که خروجی از بافر به Browser فرستاده بشه و بعد بافرینگ تعطیل شه!
جز این یه فایده دیگه ای هم که ممکنه بدرد بخوره (و ممکنه نخوره) اینه که میشه یه سری کار رو خروجی انجام داد اونم خارج از کد و به صورت مستقل مثلا میخوایم تمام کلمات Auguest رو تو خروجی که به Browser فرستاده میشه با April عوض کنیم (بیچاره الیوت اگه میفهمید شعرش سر از کجا در میاره!!) اونوقت میتونیم اینجوری عمل کنیم :

PHP:
<?php

function ob_callback($outbuffer) 
{
  // replace all the Auguest with April 
  return (str_replace("Auguest", "April", $outbuffer));
}

ob_start("ob_callback");

?>

<html>
<body>
<p>Auguest is the cruellest month 
</body>
</html>

<?php

ob_end_flush();

?>

تو این مورد ob_callback میشه تابعی که خروجی ازش عبور میکنه و ممکنه هر کاری با خروجی بکنه و فقط به همین دو دو تا چهار تا محدود نمیشه.

یه نکته هم اینکه اطلاعاتی که با تابع header فرستاده میشه از این فیلتر نمیگذره(و تابع SetCookie )
این ob_gzhandler هم اول browser رو چک میکنه بعد عمل میکنه (اگه Browser فشرده سازی رو فبول کنه ) بنابر این در مورد استفاده از اون میشه گفت که بی خطره و مشکلی پیش نمیاد حتی اگه Browser این رو ساپورت نکنه.

چقدر بيكارم من كه اينهمه نوشتم!!! :D
 

sina1808

Registered User
تاریخ عضویت
11 سپتامبر 2003
نوشته‌ها
1,564
لایک‌ها
7
يه سوال ...
اين فوروم phpbb يه حالت داره براي فعال شدن gzip
ميخواستم بدونم با فعال شدنش سرعت لود شدن صفحات بيشتر ميشه يا كمتر؟
 

A-Parsa

کاربر تازه وارد
تاریخ عضویت
10 می 2004
نوشته‌ها
39
لایک‌ها
1
به نقل از Persia :
سلام.
آقا چند تا سوال:
1- اصول اين فشرده سازي چيه؟ يعني چطوري اطلاعات يه صفحه فشرده ميشه و در عين حال کامل باقي ميمونه؟
2- فايل htaccess. فقط بايد تو Root ساخته بشه يا تو تمام فولدرهايي که فايل php در اونها وجود داره؟
3- اگه اشتباه نکنم Gzip يه قابليتيه که روي سرور بايد فعال باشه. درسته؟

ممنون
:)


سلام ..
1- علاوه بر توضيح خوب littlerabbit ، خوندن مقاله نيما هم ميتونه اطلاعات شما رو در مورد اين فشرده سازي بيشتر كنه . [ كليك كنيد ]
2- فايل htaccess. فقط در فولدر Root ساخته بشه کافی هست .
3- بله ، سرور باید از این قابلیت پشتیبانی بکنه که اکثر سرور ها -اگر اشتباه نکنم- این امکان رو بصورت فعال دارن .
 

Persia

Registered User
تاریخ عضویت
2 نوامبر 2003
نوشته‌ها
718
لایک‌ها
20
به نقل از A-Parsa :
سلام ..
1- علاوه بر توضيح خوب littlerabbit ، خوندن مقاله نيما هم ميتونه اطلاعات شما رو در مورد اين فشرده سازي بيشتر كنه . [ كليك كنيد ]
2- فايل htaccess. فقط در فولدر Root ساخته بشه کافی هست .
3- بله ، سرور باید از این قابلیت پشتیبانی بکنه که اکثر سرور ها -اگر اشتباه نکنم- این امکان رو بصورت فعال دارن .
ممنون از توضيحاتتون.
:)
 

sina1808

Registered User
تاریخ عضویت
11 سپتامبر 2003
نوشته‌ها
1,564
لایک‌ها
7
من يه خورده قاطي كردم (-:
براي صفحات استاتيك كه html و php هستند ميشه اينكار رو كرد؟
چطوري ؟ (-:
 

sina1808

Registered User
تاریخ عضویت
11 سپتامبر 2003
نوشته‌ها
1,564
لایک‌ها
7
من گد پايين رو استفاده كردم ولي ارور 500 گرفتم ...

php_value zlib.output_compression 1
php_value zlib.output_compression_level 9

لابد از اين هم نميشه استفاده كرد؟ :(
 

miladmovie

مدیر بازنشسته
کاربر فعال
تاریخ عضویت
25 دسامبر 2002
نوشته‌ها
1,939
لایک‌ها
3
سن
39
اين رو كجا اضافه كردي؟
 

sina1808

Registered User
تاریخ عضویت
11 سپتامبر 2003
نوشته‌ها
1,564
لایک‌ها
7
توي اون فايل htaccess.
اينا رو نوشتم ...
php_value zlib.output_compression 1
php_value zlib.output_compression_level 9

با مديريت هوست صحبت كردم انگار نميشه استفاده كرد ...
گفتن بنويسم توي فايلي به نام php.ini و در پوشه هاي مورد نظر كپي كنم ...
 

miladmovie

مدیر بازنشسته
کاربر فعال
تاریخ عضویت
25 دسامبر 2002
نوشته‌ها
1,939
لایک‌ها
3
سن
39
اين طوري كار كرد؟
من تنظيم php.ini براي هر شاخه رو تا به حال نديدم!
 
بالا