使用JSMin.php压缩Javascript

3
我有一个使用服务器端JSMin压缩的网站。问题在于,在实施JSMin后,我的服务器变得很慢。
这是因为有些URL导入了一些其他特定文件,并将这些文件添加到已压缩的文件中。
现在我想知道是否应该始终将这些特定脚本加载到一个大的压缩文件中,还是应该忘记这种方法并将脚本作为单独的文件导入。
我正在使用Zend Framework 1.11.x与BundlePhu + JSMin。
2个回答

3
我已经在许多项目中实现的最佳解决方案是将所有javascript拆分成不超过200kb的有限文件。我总是将JS拆分为两个(或更少三个)文件。第一个是库(jquery,zepto,swfobject,bootup ...)和“用户代码”(我的自己的$().clicks ...)。
我在/js文件夹内有一个.htaccess,它将所有scripts.js?version=45445重写为compiler.php。编译器脚本然后验证版本号,检查缓存的已编译脚本并返回它。如果没有找到,则即时编译,放入缓存并返回它。这样,JS每小时编译一次,并且始终被压缩。
我很高兴你关心通过压缩节省的1kb。
以下是示例代码:
#.htaccess
RewriteEngine on
RewriteRule ^scripts_(\d+).js(.*)$ __compress_js.php?_v=$1 [L]

然后在PHP中可以这样写:

<?php
// __compress_js.php
ob_start();
include 'config.php';
$cache = FileCache::getInstance();
$cache->setPath(CACHE_PATH);

$cache_key = '_compressed_' . VERSION . '.js';

if ( ! $cache->check($cache_key, 3600)){
    $js = JSMin... // array of files
    $cache->write($cache_key, $js);
}
Header::js();
echo $cache->read($cache_key, 3600);

上述解决方案仅会减慢第一次请求。其他用户将被提供缓存的JavaScript文件。

更好的方法是使用.htaccess重写到已经由php脚本创建的现有文件。 - twicejr

2
如果您将所有脚本压缩成一个文件,则客户端性能会更好。浏览器必须做的最慢的事情之一就是建立一个新的HTTP连接来下载一个新文件。通过将所有JavaScript放入一个压缩文件中,您可以显着提高性能,而不是有许多单独的压缩脚本。
另一方面,进行额外的处理会影响您的服务器性能。这取决于您是否愿意为客户端性能而牺牲服务器性能。请记住,有研究表明,即使只有100毫秒的客户端减速也会影响您网站的转化率

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