2012-03-21 63 views
2

這很容易最小化腳本與Yuicompressor。不幸的是,在php中使用exec執行JAR時,此過程非常緩慢。PHP:exec Yuicompressor.jar這麼慢

實施例(PHP):

// start with basic command 
    $cmd = 'java -Xmx32m -jar /bin/yuicompressor-2.4.8pre.jar -o \'/var/www/myscript.min.js\' \'/var/www/myscript.min.temp.js\''; 

    // execute the command 
    exec($cmd . ' 2>&1', $ok); 

的執行時間〜20個文件需要長達30秒!在具有8GB RAM的四核服務器上。

有沒有人知道更快的解決方案,以儘量減少一堆腳本?

回答

1

執行時間主要取決於文件大小。

讓我們試試Google Closure Compiler

將結果緩存到文件或使用一些擴展(APC,Memcached)和客戶端緩存標頭的組合也是一個好主意。如果使用filemtime()檢查上次修改時間,您將知道需要縮小或不縮小。

我經常使用文件單獨緩存來防止縮小大內容,然後創建一個MD5校驗和,如果它自上次請求後被修改,然後保存新校驗和並打印出內容,否則只是使用:

header('Not Modified', true, 302); 

這樣,在dev狀態下每個請求也是很少的計算。我正在使用ExtJS 4來處理當前的項目,這個項目的原始項目大小爲1.2 MB,項目代碼很多,沒有任何問題,響應時間也不到1秒。