پدرخوانده
دوشنبه 16 مرداد 1385, 14:41 عصر
در یک سایت داینامیک در فایلی که قرار است که اطلاعات را از جداول خوانده و نمایش دهد از تابع ob_start() جهت فعال سازی این قابلیت (فشرده سازی اطلاعات) استفاده کرده ام
(البته فرقی در فایل وب موردنظر نیست اشاره به جداول جهت روشن شدن موضوع است که اطلاعات سایت به صورت داینامیک می باشد و قرار است از جدول خوانده و نمایش داده شود)
طبق جستجوی بنده جهت فعال سازی این قابلیت در سرور با استفاده از فایل htaccess و یا تغییر در فایل php.ini (که معمولا مقدور نیست) این تنظیمات را باید انجام داد
روش اول:
output_buffering = On
output_handler = ob_gzhandler
zlib.output_compression = Off
روش دوم:
output_buffering = Off
output_handler =
zlib.output_compression = On
و حالا مشکل بنده در این است که در روش دوم بعد از تنظیم صفحه موردنظر را به صورت کدهای چرت و پرت نمایش می دهد (البته قابلیت zlib فعال (enabled) می باشد)
و در روش اول به هنگام فراخوانی تابع ob_start با پارامتر ob_gzhandler اشکال می گیرد
می خواستم بدانم که اینکه اولا از کجا می توان مطمئن شد که این قابلیت اکنون در سایت فعال است یا خیر؟ (یعنی آیا سرعت نمایش صفحات بهینه شده یا خیر؟)
و دیگر اینکه چه تفاوتی در دادن این پارامتر ( ob_gzhandler ) به تابع ob_start هست ؟
(فکر کنم در صورت استفاده از روش اول وجود آن الزامی است و در روش دوم عدم وجود آن وآیا اینچنین است؟)
و آیا در کل الزام به بستن آن در انتهای فایل می باشد
(به هنگام استفاده از تابع ob_clean() و یا ... هیچ مطلبی در صفحه نمایش نمی یابد)
با استفاده از تابع microtime و کنترل آن در ابتدا و انتهای فایل زمان لود صفحه را مشخص کرده ام (در پایین صفحه نمایش می دهد) ولیکن نتیجه ای از آن نگرفتم (چرا که اولا بین دو مرورگر ie و firefox همواره تفاوت بسیار بود (در firefox کندتر بود (زمان بیشتری داشت) ) و دیگر اینکه در هربار رفرش مقدار متفاوتی می داد و حتی با غیرفعال کردن خط دستور ob_start() نیز نمی توان بدست آورد که بهتر شده یا بدتر (چرا که برخی مواقع با وجود این تابع زمان نمایش صفحه طولانی تر بود ) و حتی جهت اطمینان از کش نشدن صفحه موردنظر در مرورگر (چه فایرفاکس یا ie) برای هر بار تست صفحه را می بستم و کش مروگر (از طریق گزینه تنظیمات موجود در option or internet options) را پاک می کردم که فرضا به علت خواندن از کش خود مرورگر سریعتر نیاورد (والبته با ctrl+f5 و یا دادن پارامتر عدد در انتهای مسیر بعد از علامت ؟ (مثلا به عنوان پارامتر ورودی فایل) نیز تست کردم) ولی نهایتا زمان اعلام شده زمان مناسبی نبود (چرا که اکثرا متفاوت بوده و حتی در برخی موارد با وجود ob_start زمان بیشتری داشت)
به هر حال ممنون میشم نسبت به این موضوع راهنمایی نمایید؟
(البته فرقی در فایل وب موردنظر نیست اشاره به جداول جهت روشن شدن موضوع است که اطلاعات سایت به صورت داینامیک می باشد و قرار است از جدول خوانده و نمایش داده شود)
طبق جستجوی بنده جهت فعال سازی این قابلیت در سرور با استفاده از فایل htaccess و یا تغییر در فایل php.ini (که معمولا مقدور نیست) این تنظیمات را باید انجام داد
روش اول:
output_buffering = On
output_handler = ob_gzhandler
zlib.output_compression = Off
روش دوم:
output_buffering = Off
output_handler =
zlib.output_compression = On
و حالا مشکل بنده در این است که در روش دوم بعد از تنظیم صفحه موردنظر را به صورت کدهای چرت و پرت نمایش می دهد (البته قابلیت zlib فعال (enabled) می باشد)
و در روش اول به هنگام فراخوانی تابع ob_start با پارامتر ob_gzhandler اشکال می گیرد
می خواستم بدانم که اینکه اولا از کجا می توان مطمئن شد که این قابلیت اکنون در سایت فعال است یا خیر؟ (یعنی آیا سرعت نمایش صفحات بهینه شده یا خیر؟)
و دیگر اینکه چه تفاوتی در دادن این پارامتر ( ob_gzhandler ) به تابع ob_start هست ؟
(فکر کنم در صورت استفاده از روش اول وجود آن الزامی است و در روش دوم عدم وجود آن وآیا اینچنین است؟)
و آیا در کل الزام به بستن آن در انتهای فایل می باشد
(به هنگام استفاده از تابع ob_clean() و یا ... هیچ مطلبی در صفحه نمایش نمی یابد)
با استفاده از تابع microtime و کنترل آن در ابتدا و انتهای فایل زمان لود صفحه را مشخص کرده ام (در پایین صفحه نمایش می دهد) ولیکن نتیجه ای از آن نگرفتم (چرا که اولا بین دو مرورگر ie و firefox همواره تفاوت بسیار بود (در firefox کندتر بود (زمان بیشتری داشت) ) و دیگر اینکه در هربار رفرش مقدار متفاوتی می داد و حتی با غیرفعال کردن خط دستور ob_start() نیز نمی توان بدست آورد که بهتر شده یا بدتر (چرا که برخی مواقع با وجود این تابع زمان نمایش صفحه طولانی تر بود ) و حتی جهت اطمینان از کش نشدن صفحه موردنظر در مرورگر (چه فایرفاکس یا ie) برای هر بار تست صفحه را می بستم و کش مروگر (از طریق گزینه تنظیمات موجود در option or internet options) را پاک می کردم که فرضا به علت خواندن از کش خود مرورگر سریعتر نیاورد (والبته با ctrl+f5 و یا دادن پارامتر عدد در انتهای مسیر بعد از علامت ؟ (مثلا به عنوان پارامتر ورودی فایل) نیز تست کردم) ولی نهایتا زمان اعلام شده زمان مناسبی نبود (چرا که اکثرا متفاوت بوده و حتی در برخی موارد با وجود ob_start زمان بیشتری داشت)
به هر حال ممنون میشم نسبت به این موضوع راهنمایی نمایید؟