2012-03-21 20 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秒。