2013-03-25 139 views
3

我有一个JSMin缩小在服务器端的网站。问题是我的服务器在执行JSMin后变慢了使用JSMin.php来缩小Javascript

发生这种情况是因为有些URL会导入一些其他特定文件,并将这些文件添加到缩小的文件中。

现在我想知道是否应该总是将这些特定的脚本加载到一个大的缩小文件中,或者我应该忘记这种方法并将脚本作为分隔文件导入。

我使用Zend框架1.11.x与BundlePhu + JSMin

回答

3

我在很多项目中实现的最佳解决方案是将所有JavaScript分割成最大200kb的有限文件。我总是将JS分成两个(或者更少的三个)文件。第一个是库(jquery,zepto,swfobject,bootup ...)和“用户代码”(我自己的$()。点击...)。

我在我的/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。

+0

更好的办法是使用.htaccess重写现有文件,这些文件在php脚本创建的第一次运行中。 – twicejr 2013-11-22 19:40:04

2

这将是客户方的表现更好,如果你紧凑的所有脚本到一个文件中。浏览器最慢的一件事就是创建一个新的http连接来下载一个新文件。通过将您所有的JavaScript放入一个缩小文件中,您可以显着提高性能,而不必使用一堆单独的缩小脚本。

另一方面,做额外的处理会损害您的服务器性能。您是否想要牺牲服务器性能来实现客户端性能取决于您。但请记住,有研究表明,clientside slowdowns of as little as 100ms can affect your site's conversion rate