السلام عليكم،
سأحاول إنشاء الله كلما ما استفدت من شيء وضعه في سوالف ليس لحبي لسوالف بل لمساعدة الويب الماسترز العرب إنشاء الله. وأتمنى من الجميع اللي بيتعلم شي جميل و مفيد ما يبخل على إخوانه، فمعلوماتك التي تتضعها صدقة جارية بإذن الله.
اليوم سأتكلم عن طريقتين تؤدي لنفس النتيجة لتسريع الموقع و تقليل الترافيك بشكل كبير.
الطريقة الأولى:
وضع هذا الدالة في رأس الصفحة قبل أي شيء
كود:
<?php
function isBuggyIe() {
$ua = $_SERVER['HTTP_USER_AGENT'];
// quick escape for non-IEs
if (0 !== strpos($ua, 'Mozilla/4.0 (compatible; MSIE ')
|| false !== strpos($ua, 'Opera')) {
return false;
}
// no regex = faaast
$version = (float)substr($ua, 30);
return (
$version < 6
|| ($version == 6 && false === strpos($ua, 'SV1'))
);
}
// usage:
isBuggyIe() || ob_start("ob_gzhandler");
?>
وظيفة هذه الدالة هي تقديم الموقع مضغوط للمتصفحات التي تقبل gzip، فتوفر ترافيك و تعطي سرعة ملحوظة
ولكن ليس كل الملفات php فكيف أسرع الملفات الأخرى؟
مثال لدينا script.js فنكتبها مثلا <script type="text/javascript" src="js/myscript.js.php"></script>
ونضع الدالة في رأس الصفحة كذلك. وتعمل بشكل طبيعي.
الطريقة الثانية و هي الأفضل:
نذهب إلى 7-Zip و ننزل البرنامج الشكل قد لا يعجبك لكنه فعال.
بعدها أختار الملفات التي أريد ضغطها، و أضغطها على ال maximun بصيغة gzip، صيغة gzip هي لضغط ملفات الويب و ليس للجهاز.
فتصبح عندنا الملفات بالشكل التالي:
index.php.gz
style.css.gz
script.js.gz
مساحتها أقل و ستلاحظ حجم الصفحة
ثم نرفعها على السيرفر إلى جانب الملفات القديمة.
بعدها سنطلب عبر ال htaccess أن يحول مثلا عند طلب index.php إلى الصيغة المضفوطة index.php.gz
عبر الطريقة التالية
كود:
RewriteBase /
RewriteCond %{HTTP:Accept-Encoding} .*gzip.*
RewriteRule ^js/(.*)\.js$ /js/$1.js.gz [L]
RewriteRule ^css/(.*)\.css$ /css/$1.css.gz [L]
AddEncoding x-gzip text.gz
RewriteCond %{HTTP:Accept-Encoding} .*gzip.*
هذا يفحص إذا كان المتصفح يدعم صيغة gzip و هي متوفرة في أغلب المتصفحات الحديثة.
إذا لم يتوفر الشرط لا يحول إلى index.php.gz لذا مهم أن تبقي index.php بنفس المجلد.
RewriteRule ^jsfolder/(.*)\.js$ /js/$1.js.gz [L]
هنا يحول مثلاً أي ملف جافا سكريبت موجود في مجلد jsfolder إلى ملفات الجافا سكريبت المضغوطة في نفس المجلد
ما الفرق بين الطريقة الأولى و الثانية؟
الأولى تتطلب موارد أكثر من السيرفر أي يجب أن يكون السيرفر يتحمل لأنه يضغط الملفات ثم يقدمها، لذا أنصح بإستعمالها في الملفات التي لا تزار بشكل كبير او عليها ضغط.
الطريقة الثانية تكلف موارد قليلة جداً لل htaccess و يكون الملف مضغوط جاهز.
إنتهينا الآن، كيف يمكننا أن نفحص إذا تم الضغط فعلا و نجحت العملية ؟
ندخل هنا ونضع الرابط هنا GIDZipTest: Web Page Compression (Deflate / Gzip) Test - GIDNetwork و نشوف ما النتيجة و كم قلت مساحة الصفحة بتفصيل أكثر
أو ببساطة عبر الفايرفوكس لاحظ أنني ضغط رابط هذه الصفحة http://www.arabic-keyboard.org/arabic-typing-test/
وفرقت المساحة ب 65% ، و هذا ليس بشيء قليل .
كما أني استعمل هذه الطريقة لضغط منصات جافا سكريبت ك mootools و jquery وغيرها، بعد أن أضغطها ب packer إذا امكن . فلا يعود لدي مشكلة لا بالترافيك و لا بالسرعة.
ولا تنسى أنه يجب أن تكون مكتبة gzip deflate متوفرة على السيرفر، وهي موجودة معظم الأحيان
الصورة بالمرفقات توضح
والله أعلم