【问题标题】:Minifying JS/CSS Files on request with PHP使用 PHP 根据请求缩小 JS/CSS 文件
【发布时间】:2012-10-13 09:53:59
【问题描述】:

我目前正在编写一个 javascript 类,该类根据站点的需要从我的服务器加载库。很像 Google API e.g. google.load('jquery','1.7.1')

我想做的一件事是将所有 JS/CSS 文件合并为一个,并使用 PHP 将它们缩小。我仔细浏览了网络,虽然我能够在 Stackoverflow 上找到一些与该主题相关的问题,但它们似乎有些过时了。因此,我决定重新开启这场辩论,以获取有关此主题的最新信息。

我在网上找到了两个 PHP Javascript 缩小器,它们是

  1. JShrink
  2. Javascript Packer

我确实找到了第三个(JSMin),但是没有维护

我的问题很简单:

  1. 这些脚本是否可靠并得到维护?它们甚至需要维护吗?
  2. 他们会压缩 CSS 吗?
  3. 哪个脚本更好?

【问题讨论】:

  • Sass(也可能是 LESS 和 Stylus)将缩小 CSS 等等。即使您对 Ruby 不感兴趣,仍然值得在您的开发服务器上安装它以用于 Sass。
  • 我是 JShrink 的作者,是的,它仍然在维护 :-)

标签: php javascript css ajax minify


【解决方案1】:

我没有使用 JShrink 或 Javascript Packer。我认为最好的解决方案是使用 Google's Closure Compiler 进行 JS 缩小。您可以在您的服务器上使用他们的命令行 Java 应用程序(如果您有权这样做)或通过 cURL 或 Zend_Request 访问他们的 RESTful API。

如果源文件没有改变,不要忘记缓存缩小的文件并重复使用它们。

使用 cURL 看起来像这样:

$inFile = "sample.js";
$outFile = "sample.min.js";

$ch = curl_init('http://closure-compiler.appspot.com/compile');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array(
  'js_code' => file_get_contents($inFile),
  'compilation_level' => 'SIMPLE_OPTIMIZATIONS',
  'output_format' => 'text',
  'output_info' => 'compiled_code'
)));

file_put_contents($outFile, curl_exec($ch));

【讨论】:

  • 您能否发布一个使用 cURL 方法的示例,因为您似乎无法从您的链接中找到这方面的文档?
  • 感谢您的编辑,我仍然不确定该选择哪一个。你怎么能确定'closure-compiler.appspot.com/compile'不会失败?如果是谷歌的子域,我会有一些信心,但我不能承担第三方域的风险,因为他们可以随时下线
  • Domain 归 Google 所有。这取决于你,但多年来我在所有更大的项目中都使用 Closure 编译器。当然,如果 API 不可用或您的 javascript 无效,您的代码需要一些异常处理。在这种情况下,您至少可以返回未缩小的代码。
【解决方案2】:

我正在使用这个,效果很好http://code.google.com/p/minify/

如果你在windows上开发会有一些问题,可能无法识别新版本,但是修改文件会看到它

【讨论】:

  • 你的意思是它可能无法识别新版本?我可以用 PHP 和 filemtime 处理缓存,如果你是这个意思?
  • 这意味着当我在Windows7机器上开发时,我升级了我的jQuery库,它仍然会将旧的库发送到浏览器,我在.js文件中修改了一个字母,然后发送新的,这个bug只发生过一次
  • 好吧,可能只是缓存问题。这无关紧要,因为我将使用 PHP 处理缓存
猜你喜欢
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-08
  • 2018-10-25
  • 1970-01-01
相关资源
最近更新 更多