PHP - JS和CSS压缩器

4
我有一个简单的CSS缩小器,它只是删除空格和注释。我对它相当满意,但如果有更好的东西,请告诉我。
现在来看JS缩小器,我有这个庞然大物:https://github.com/rgrove/jsmin-php/blob/master/jsmin.php , 当然, 我有一些非常长的JS脚本。我想要一个快速缩小器来迅速缩小它们。缩小jQuery(我知道它已经被缩小了)需要2秒钟,有时甚至需要4秒或更长时间!我不会有像jQuery那样大的文件,但我可能会得到一些一半大小的文件,我认为加载单个JS文件需要1-2秒并不太吸引人。
我在想是否有一些快速的缩小器?我只需要一个缩小器,不需要组合、缓存等功能。

我看到了你对Genesis答案的评论。如果你缓存了被压缩的输出,我不明白为什么压缩需要多长时间是个问题?就我所知,2-4秒只在第一次压缩包时才会出现。后续调用应该从缓存中获取已经被压缩的代码。我有什么地方理解错误吗? - Herbert
我认为你正在寻找这个 https://github.com/c9s/pecl-cssmin - c9s
3个回答

3

你不需要快速的代码压缩工具 - 只需在修改时构建(压缩)JavaScript 的新版本,将其全部保存到 js 文件中即可。


我想OP打算在运行时压缩代码。 - Cyclone
@Cyclone:是的,但他永远无法比使用单个JS文件更快地完成它 - 我认为下载时间甚至会比未经缩小的文件更长。 - genesis
我的意思是,JavaScript代码是动态的,或者基于用户输入之类的。显然,OP不应该对静态JavaScript代码进行缩小处理。 - Cyclone
我不使用压缩版本进行编码。我有一个XML文件中的包,PHP会读取其中的内容。它将组合包中的所有文件,并获取每个文件的内容并将其构建在一起。我会对其进行压缩,缓存输出...然后发送到浏览器。我不明白你所说的在保存之前进行压缩的意思。那只是需要...努力吗? - Jeanie Tallis
所以...我不确定我应该做什么。 - Jeanie Tallis
@JeanieTallis:不要将输出缓存,而是将其保存为单独的.js文件并放入您的网站以进行下载-这样比使用php快得多。 - genesis

2
<?php
$js = file_get_contents($_GET['f']);
$md = md5($js); // you can use sth faster, such as date comparsion
if (file_exists('cache/'.$md.'.js')) {
  echo file_get_contents('cache/'.$md.'.js');
} else {
  $min = yourJsMinifierFunc($js);
  file_put_contents('cache/'.$md.'.js', $min);
  echo $min;
}

好的,它应该可以为您工作。一旦您修改了.js文件,它将被压缩和缓存。


这是一个更好的方法,我认为我会使用它。谢谢 :) - Abimael Martell

0

我建议你看一下Assetic库。 使用Assetic,你可以从PHP端管理所有的资源,并按照需要应用过滤器。


它很慢,因为它是基于Symfony的组件。 - c9s
@c9s 这不是 Symfony 的 bundle。顺便问一下,文件生成后的开销是多少? - seltzlab

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接