在網頁中動態載入的 JavaScript 對於頁面顯示的速度影響甚多,不得不注意!
尤其是很多人習慣把 JavaScript include 寫在 區塊中,這樣一來最大的問題就是 Browser 必須要等到 JavaScript 全部讀完後才會開始顯示網頁,如果你像信義房屋這樣,讀一個首頁要下載 18 個 JavaScript 外部檔且「沒有大頻寬」的話,首頁就要等這 18 個 JavaScript 下載完才會開始顯示網頁,在這之前使用者就只會看到白白的一片畫面!
所以我有兩個建議:
1. 建議儘量將 JavaScript 擺在 之前
2. 建議將所有外部的 JavaScript 檔案都先「瘦身」過!
至於瘦身的話,我是習慣用 JSMin 這個工具,在上線前跑一個自己寫的批次檔將所有 *.js 檔壓縮過再傳到網站上,這樣至少可以減少一些檔案下載的時間。
你可到這個網站 ( http://www.crockford.com/javascript/jsmin.html ) 下載 jsmin.exe 檔,使用方法是:
C:\> jsmin.exe > 輸出.js < 引入.js
這樣就可以將 fulljslint.js 壓縮後儲存到 jslint.js 檔案了,但要切記不要輸入與輸出用相同的檔名,這會把你的檔案內容給清空!!
而我自己是寫了一組 Batch 檔 (*.bat) 做批次壓縮的動作。
第一支:RunJSMin.bat ( 下列的檔案請換成你們自己的 js 檔 )
@echo off
SET JSDir=Website\js
CALL JsMinfy.bat %JSDir% common.js
CALL JsMinfy.bat %JSDir% debug.js
CALL JsMinfy.bat %JSDir% flashfix.js
CALL JsMinfy.bat %JSDir% jquery.cookie.js
CALL JsMinfy.bat %JSDir% png_transparent.js
CALL JsMinfy.bat %JSDir% swfobject.js第二支: JsMinfy.bat
@REM 此檔是給 RunJSMin.bat 呼叫用的
@REM 第一個參數是要壓縮的 JavaScript 所在目錄
@REM 第二個參數是要壓縮的 JavaScript 檔名set DirName=%1
set FileName=%2jsmin.exe < %DirName%\%FileName% > %DirName%\compressed.%FileName%
del /F %DirName%\%FileName%
ren %DirName%\compressed.%FileName% %FileName%
jsmin-php下載
<?php
include 'jsmin.php';
array_shift($argv);
foreach ($argv AS $file) {
echo '/* ', $file, ' */';
echo JSMin::minify(file_get_contents($file)), "\n";
}
?>
$ php compress.php source1.js source2.js source3.js > result.js
沒有留言:
張貼留言