adkdev // Just another web development blog


เพิ่มความเร็วในการโหลด Javascript กับ CSS กันดีกว่า

ระยะเวลาในการโหลดหน้าเว็บเพจ เป็นสิ่งหนึ่งที่สำคัญในการพัฒนาเว็บ แต่ถ้าหากว่าหน้าเว็บเพจของเรามีความเร็วในการโหลดเร็วมาก ก็จะเป็นการดี
ขนาดของไฟล์นั้น ก็เป็นอีกปัจจัยหนึ่ง ที่มีผลต่อความเร็วในการโหลดหน้าเว็บเพจ ซึ่งถ้าหากว่าเราสามารถที่จะลดขนาดไฟล์ได้ ก็จะเป็นการดี และทำให้เว็บเพจของเราโหลดเร็วขึ้น ส่วนใหญ่เราจะนึกแต่ขนาดของรูปภาพ แต่ขนาดของไฟล์อื่น ก็สำคัญไม่แพ้กัน ไม่ว่าจะเป็น php, javascript, css ฯลฯ

และวิธีการลดขนาดไฟล์นั้นก็มีหลายวิธี วันนี้ผมมีอีก หนึ่ง ในหลายๆ วิธีมานำเสนอ (*-*)
พระเอกในงานนี้ก็คือ Combine 0.5 ไฟล์ php จากดาวนาเม็ก

ขั้นตอนการทำงาน คือ ใช้ไฟล์ php ในการอ่านไฟล์และ ทำการบีบอัดแล้ว เก็บไฟล์นั้นไว้ใน cache จากหลายๆ ไฟล์ ก็จะเหลือแค่ไฟล์เดียว และที่สำคัญ ใช้ได้ทั้ง javascript และ css (หรือไฟล์อื่นๆ อีก)

คราวนี้ก็มาที่วิธีใช้ ก่อนอื่นต้องไปดาวโหลดไฟล์มาก่อน Download

จากนั้นก็สร้างโฟล์เดอร์ cache ขึ้นมา (ตั้ง permission ให้เขียนได้ด้วยนะ) เพื่อเก็บ cache ไฟล์
แล้วสร้างไฟล์ .htaccess ขึ้นมา แล้วเพิ่มข้อความข้างล่างนี้ ลงไป

RewriteEngine On
RewriteBase /
RewriteRule ^css/(.*.css) /combine.php?type=css&files=$1
RewriteRule ^javascript/(.*.js) /combine.php?type=javascript&files=$1

เพื่อทำการ rewrite url จากนั้นก็ทำการเรียกใช้ โดยอ้างอิงที่อยู่ของไฟล์ ตามรูปแบบการ rewrite url ข้างบน

http://www.adkdev.com/javascript/prototype.js
http://www.adkdev.com/javascript/builder.js
http://www.adkdev.com/javascript/effects.js
http://www.adkdev.com/javascript/dragdrop.js
http://www.adkdev.com/javascript/slider.js
http://www.adkdev.com/css/style.css
http://www.adkdev.com/css/page.css

หรือจะเรียกเป็นแบบต่อกันโดยใช้ คอมม่า (,) คั่นก็ได้

http://www.adkdev.com/javascript/prototype.js,builder.js,effects.js,dragdrop.js,slider.js
http://www.adkdev.com/css/style.css,page.css

หรือว่าจะเรียกผ่านไฟล์ php โดยตรง ก็จะได้เป็น

combine.php?type=javascript&files=prototype.js,builder.js,effects.js,dragdrop.js,slider.js
combine.php?type=css&files=style.css,page.css

จากการทดลองเรียกใช้ไฟล์ javascript ขนาดไฟล์ทั้งหมดประมาณ 71kb หลังจากบีบอัดแล้วเหลือ 18kb
คิดว่าน่าจะเห็นผลชัดเจน เมื่อต้องการเรียกใช้ไฟล์ javascript ขนาดใหญ่ อย่าง Ext JS - JavaScript Library

อ่านข้อมูลเพิ่มเติมได้ที่หน้าเว็บไซต์ของผู่จัดทำครับ rakaz - Code - Combine

Related Posts

  • Ext JS 1.1 มาแว้ว
  • Compressed versions of Prototype
  • ใส่เสียงให้เว็บด้วย JavaScript โดยไม่ง้อ Flash
  • Javascript Tetris
  • adkdev said,

    June 21, 2007 @ 10:13 am

    สงสัยผมจะรีบเกินไป มีบางคนไม่เข้าใจ ว่าใช้ยังไง

    การเรียกใช้ก็เป็นแบบปกติหนะครับ เปลี่ยนแค่ที่อยู่ของไฟล์
    Javascript : < script type="text/javascript" src="http://www.adkdev.com/javascript/prototype.js,builder.js,effects.js,dragdrop.js,slider.js">

    CSS: < link rel="stylesheet" type="text/css" href="http://www.adkdev.com/css/style.css,page.css" media="screen" />

    และก็ที่ไฟล์ combine.php นี่เราต้องดูบรรทัดที่ 28-31 ด้วยนะครับ
    28: $cache = true;
    29: $cachedir = dirname(__FILE__) . ‘/cache’;
    30: $cssdir = dirname(__FILE__) . ‘/css’;
    31: $jsdir = dirname(__FILE__) . ‘/javascript’;

    หากบรรทัดที่ 28 เป็น true ต้องสร้างโฟล์เดอร์ cache ด้วยนะครับ
    บรรทัดที่ 29 ก็เป็นชื่อโฟล์เดอร์
    บรรทัดที่ 30 เป็นโฟล์เดอร์ที่เก็บไฟล์ css
    ส่วนบรรทัดที่ 31 ก็เก็บไฟล์ javascript ตามระเบียบ

    เก็บไฟล์ combine.php ไว้ที่ web root นะครับ

    anakin said,

    October 1, 2007 @ 11:08 am

    ผมจะเอาไปใช้ในระบบเว็บอินทราเน็ตได้รึปล่าวครับ

    adkdev said,

    October 1, 2007 @ 8:25 pm

    ได้ครับ อาจเอาไปแก้โค้ดหรือดัดแปลงรูปแบบการใช้งานอีกก็ได้ ตามสะดวก

    เรื่อง Mod Rewrite ลองอ่านจาก
    Apache Mod Rewrite เพื่อทำ Easy URL-
    http://www.scriptdd.com/webtip/apache-mod-rewrite-easy-url.html

    พอดีไปเจอมา อธิบายละเอียดดีครับ

    RSS feed for comments on this post · TrackBack URI

    Leave a Comment




    Home Contact me! RSS