وبلاگ فيکسل برای گرافيست ها
SharpLife وبلاگ شخصی مهدی تقی زاده
بازگشت شاهو طوفانی
اين صداگذاری و ميکس آخرشه!
نکته جالبی در مورد تابع output_add_rewrite_var
کاراکتر های فارسی در عکس توسط PHP
مصاحبه من با مجله وزین IranAMP
واژه های فناوری اطلاعات و برابر های پیشنهادی فرهنگستان
دوره های آموزش IT
استانداردهای کدنويسی PHP
| صفحه قبل


IranPHP
نماينده رسمي سايت PHP.net

webilix
منبعي براي برنامه نويسان PHP

phprun
وبلاگي خواندني براي تمام PHP كارها

ם تعداد بازديدكنندگان
كل: 924769
ديروز: 915
امروز: 819
ם تعداد كاربران آنلاين
6 نفر
ם پنج مراجعه آخر
pulse.yahoo.com
mycharmme.hit.bg
elor678.cm.to
okpoyei.is.com
xcfgykful.chez.com
 
 
بهينه سازی فايلها توسط Tidy
در مطالب پيشين در مورد اينکه توسعه Tidy چيست و چه امکاناتی را در اختيار ما قرار می دهد صحبت کرديم. در اين مطلب می خواهم به نحوه بهينه سازی فايلها توسط Tidy بپردازم و با ذکر گوشه ای از واسط شی گرای آن بحث اين توسعه را خاتمه دهم.
Tidy اختیاراتی را فراهم آورده است که به موجب آن می توان حجم فایلهای خروجی را کاهش داد. با حذف فضاهای خالی(Whitespaces) زائد، توضیحات(Comments) و تبدیل تگ های font به CSS این امر محقق می شود.
یک نمونه پیکربندی ساده جهت حذف تمام کاراکترهای غیرضروری موجود در یک فایل:

<?php
$options 
= array(
    
'clean' => true,
    
'drop-proprietary-attributes' => true
    
'drop-empty-paras' => true
    
'hide-comments' => true,
    
'hide-endtags' => true,
    
'join-classes' => true
    
'join-styles' => true
    
'wrap' => 0,
); 

$tidy tidy_parse_file('http://www.example.org/'$options); 
tidy_clean_repair($tidy); 
print 
$tidy;
?>

با وضع چنين گزينه هايی جهت پيکربندی، توانستيم آن تگهای HTML ای که مرورگر کاری با آنها ندارد و به عبارتی در هنگام نمايش صفحه، آنها را در نظر نمی گيرد حذف کنيم؛ همچنين استايلهای تکراری موجود در فايل را به يک استايل واحد تبديل کرديم.
به خاطر داشته باشيد که مقدار بهينه سازی که در حجم فايلهای خود انجام می دهيد به ازای هر صفحه ای که سرويس دهنده به سمت سرويس گيرنده ارسال می کند، باعث تاثیر بسزايی در کاهش پهنای باند مصرفی و هزينه اخذ شده جهت اين مهم دارد و به عبارتی چاره درد سايتهايی با ترافيک بالاست.
جدول پايين، حاوی گزينه های پيکربندی Tidy جهت بهينه سازی فايلهاست:

نامتوضيحمقاديرمقدار پيش فرض
cleanآيا تگ هاي نمايشي نظير center با استايلهاي مربوطه جايگزين شود؟Booleanno
drop-proprietary-attributesآيا خصيصه هاي اختصاصي كه توسط برخي برنامه هاي نظير FrontPage توليد مي شود حذف شود؟Booleanno
drop-font-tagsحذف تگ هاي font در صورتيكه گزينه clean فعال باشد.Booleanno
drop-empty-parasحذف تگ هاي p خاليBooleanyes
hide-commentsپاك كردن توضيحاتBooleanno
hide-endtagsحذف تگ هاي پاياني در صورت امكان(البته با توجه به Document Type)Booleanno
join-classesادغام كلاس هاي مرتبط با همBooleanno
join-stylesادغام استايلهاي مرتبط با همBooleanyes
wrapعرض Line Wrapping (مقدار صفر براي از كار انداختن Wrapping)Integer68

واسط شی گرايی(Object-Oriented Interface)
Tidy علاوه بر واسط رويه ای خود، دارای واسط شی گرايی نيز می باشد.

<?php
$tidy 
= new Tidy('I am <b>bold and I am <i>bold and italic</b>');
$tidy->cleanRepair( );
print 
$this->getOutput( );
?>

نظير ساير توسعه ها که علاوه بر واسط رويه ای دارای واسط شی گرايی هم هستند، متدهای Tidy از شيوه نامگذاری studlyCaps استفاده می کند. اين نوع نامگذاری را کوهان شتری ميگويند و توصيه می شود که برنامه نويسان هنگام توسعه برنامه های کاربردی اين قاعده را رعایت کنند.
(برای دوستانی که معنی studlyCaps را نمی دانند، بايد عرض کنم قاعده این شیوه نامگذاری بر این اساس است که حرف اول نام متد را کوچک و حرف اول ساير کلمات را بزرگ می نويسيم. روش ديگر استفاده از زيرخط(Underscore) است که برنامه نويسان قديمی با آن مانوس هستند؛ بدين ترتيب که کلمات را با زيرخط از هم جدا می کنیم.)
در ضمن يک منبع يا Resource از نوع Tidy را نمی توان به متدهای آن ارسال کرد چون منبع در خود آبجکتی که نمونه گرفته ايم، ذخيره می شود.
والسلام! cool
 
نظرات شما(6)  
پيکربندی Tidy
Tidy Extensionمی رسيم به نحوه پيکربندی Tidy؛ راه های زبادی برای پيکربندی يا Configure کردن Tidy وجود دارد. اختياراتی که جهت پيکربندی Tidy به کار می رود را می توان در يک آرايه يا فايل ذخيره کرد. برای مثال تکه کد زير تنها بخش Body از سند اصلاح شده را نمايش می دهد.

<?php
$options 
= array('show-body-only' => true);
$tidy tidy_parse_string('I am <b>bold and I am <i>bold and italic</b>');
tidy_clean_repair($tidy);
print 
tidy_get_output($tidy);
?>

خروجی تکه کد بالا هم طبيعتا به صورت زیر است:

I am <b>bold and I am <i>bold and italic</i></b>

این امکان وقتی مفید هست که یک Message Board دارید و می خواهید پیام های کاربران را در آن نمایش دهید. از آنجا که این پیام ها داخل Template سایت شما جای می گیرند، دیگر لازم به یک سند کامل HTML نخواهید داشت و صرفا بخش Body کفایت می کند.
در مثال فوق، اختيارات يا دستورالعمل های پيکربندی را داخل يک آرايه قرار داديم؛ همانظور که گفتم اين دستورالعملها را داخل يک فايل هم می توان نوشت و نام فايل را به عنوان ورودی به تابع tidy_parse_string ارسال کرد. دقت کنيد که در فايل پيکربندی هر دستورالعمل می بايست در يک خط جديد قرار بگيرد و از کالن(:) می توان جهت جداسازی نام و مقدار دستورالعمل استفاده کرد. اگر در فايل پيکربندی داشته باشيم:

show-body-only: true
logical-emphasis: true

و نام فایل را tidy.cnf بگذاریم، تکه کد:

<?php
tidy 
tidy_parse_string('I am <b>bold and I am <i>bold and italic</b>',  'tidy.cnf');
tidy_clean_repair($tidy);
print 
tidy_get_output($tidy);
?>

خروجی زير را خواهد داشت.

I am <strong>bold and I am <em>bold and italic</em></strong>

مشاهده می کنید که با روشن کردن گزينه logical-emphasis تگ های i و b به معادل های منطقی آنها تبديل شدند.
در جدول پايين مهمترین و متداول ترین گزينه های پيکربندی Tidy را آورده ام. برای مشاهده ليست کامل، به اينجا مراجعه کنيد.

نامتوضيحمقاديرمقدار پيش فرض
cleanآيا Tidy تگ هاي Font را به CSS تبديل كند؟Booleanno
hide-endtagsآيا تگ هاي پاياني حذف شود؟Booleanno
indentتورفتگي تگ هاي Block-level نظير تگ pyes,no,autono
indent-spacesمقدار فاصله براي هر تورفتگي Integer2
markupتهيه نسخه قابل چاپ فايلBooleanyes
output-xmlخروجي XML به جاي HTMLBooleanno
output-xhtmlخروجي XHTML به جاي HTMLBooleanno
show-body-onlyخروجي محتويات بخش BodyBooleanno

در مطلب بعدی بهينه سازی فايلها توسط Tidy را توضيح می دهم. (سعی میکنم تا شنبه کل مطلب را جمع کنم. wink)
 
نظرات شما(1)  
توسعه Tidy
Tidy Extension يکی از توسعه های جديدی که همراه PHP 5 معرفی شد، توسعه* Tidy (تایدی) هست که کارش تر و تمیز کردن سندهای HTML و XML درهم برهم و تبدیل آنها به اسناد معتبر و خوش نما هست. این امکان زمانی مفید واقع میشه که بخواهید محتویاتی را که خارج از برنامه شما تولید شده اند را نمایش دهید. برای روشن تر شدن موضوع مثالی می آورم. فرض کنید بازدیدکنندگان سایتتان بتوانند مستقیما پیامی ارسال کنند و آن پیام برای سایرین به نمایش گذارده شود و برای جذاب تر شدن پیغام ها، اجازه استفاده از تگ های HTML را به منظور قالب بندی پیغام ها داده اید. از طرفی هم نمی خواهید، کاربرانی که از HTML سردر نمی آورند، صفحات غیر معتبری تولید کنند. بررسی این موارد به طور دستی مسلما کار پرزحمتی است اما با کمک توسعه Tidy می توان این پروسه را کاملا مکانیزه کرد.
هم چنین از Tidy می توان برای قالب بندی مجدد اسناد استفاده کرد که این امر یا در جهت کاهش حجم فایل صورت می پذیرد و یا برای خوانا تر شدن اسناد توسط انسان قابل اجراست. مورد اول باعث صرفه جویی در پهنای باند وب سایت شما می شود و در نتیجه علاوه بر اینکه صفحات سایت سریعتر انتقال می یابند، هزینه ی کلی میزبانی وب هم کاسته می شود؛ حال آنکه مورد دوم پروسه اشکالزدایی را تسهیل می بخشد و مجبور نیستید به دنبال تگ های آواره ای بگردید که سهوا از قلم افتاده اند.
توسعه Tidy همراه PHP توزیع می شود ولی بطور پیش فرض فعال نیست؛ چون مستلزم نصب کتابخانه Tidy می باشد. این کتابخانه را می توانید از http://tidy.sourceforge.net دریافت کنید و هنگام کامپایل کردن PHP گزینه with-tidy=DIR-- را اضافه کنید تا پشتیبانی از Tidy فعال شود.(DIR نام دایرکتوری است که کتابخانه Tidy در آنجا مستقر است.)
مقدمات:
کار با Tidy بسيار ساده است و فرآیندی سه مرحله ای است. ابتدا فايل را تفسير کرده، سپس محتويات آن را تميز می کنید و نهايتا فايل اصلاح شده را ذخيره يا چاپ می کنيد.
از تابع ()tidy_parse_file برای خواندن فايل مورد نظر استفاده می شود. اين فايل در واقع فايلی است که می خواهيم محتويات آن پاکسازی شده و نقص های آن برطرف شود.

<?php
$tidy 
tidy_parse_file('index.html');
?>

اگر فايلی در کار نبود و داده های شما به صورت رشته کاراکتری بود از تابع ()tidy_parse_string کمک بگيريد.
همانطور که در مثال پایین مشاهده می کنید، عمدا تگ پایانی i را جا انداخته ایم.

<?php
$tidy 
tidy_parse_string('I am <b>bold and I am <i>bold and italic</b>');
?>

تبديل سند از طريق تابع ()tidy_clean_repair صورت می گيرد که به عنوان ورودی يک Resource از نوع Tidy را به آن می فرستيم.

<?php
$tidy 
tidy_parse_string('I am <b>bold and I am <i>bold and italic</b>');
tidy_clean_repair($tidy);
?>

مقدار بازگشتی اين تابع در صورتی که کار بخوبی پيش برود مقدار True و در صورت بروز خطا مقدار False است. توجه کنيد که اين تابع سند تر تميز شده و شسته رفته را به عنوان خروجی خود بر نمی گرداند؛ بدين منظور از تابع ()tidy_get_output برای بازيابی سند اصلاح شده استفاده می کنيم.

<?php
$tidy 
tidy_parse_string('I am <b>bold and I am <i>bold and italic</b>');
tidy_clean_repair($tidy);
print 
tidy_get_output($tidy);
?>

خروجی دستورهای فوق را در زير می بينيد:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title></title>
</head>
<body>
I am <b>bold and I am <i>bold and italic</i></b>
</body>
</html>

همانطور که می بنيد توسعه Tidy کاری فراتر از جبران تگ پايانی i را انجام داده و رشته کاراکتر ارسالی را تبديل به يک سند HTML 3.2 معتبر کرده است.
در مطلب بعدی در مورد پيکربندی Tidy و بهينه سازی فايلها از طريق اين توسعه و واسط شی گرايی Tidy صحبت می کنم.

*) Extension
ويرايش شده در پنج شنبه، 26 شهريور 1383 ساعت 20:03
 
نظرات شما(6)  
| صفحه قبل
 
 
نام: نيما شايافر
متولد: 7/7/1362
تحصيلات: دانشجو
شغل: طراح وب و برنامه نويس
وضعيت: آفلاين

ماهيانه
مرداد 86 (2)
خرداد 86 (1)
دي 84 (4)
آذر 84 (5)
مرداد 84 (1)
تير 84 (1)
ارديبهشت 84 (2)
دي 83 (1)
آذر 83 (2)
آبان 83 (2)
مهر 83 (4)
شهريور 83 (6)
مرداد 83 (3)
تير 83 (7)
خرداد 83 (7)
ارديبهشت 83 (8)
فروردين 83 (13)
اسفند 82 (12)

موضوعي






جستجوي پيشرفته

BlogRolling is currently inaccessible.
©2004, Design & Developed by: Nima Shayafar. All rights reserved.