我有一个在服务器端与JSMin缩小网站。问题是在实现JSMin之后,我的服务器变得很慢
这是因为存在导入其他特定文件的urls,并且这些文件被添加到缩小的文件中。
现在我想知道我是否应该总是将这些特定的脚本加载到一个大的缩小文件中,或者我是否应该忘记这种方法并将这些脚本作为单独的文件导入。
我正在使用带有BundlePhu + JSMin的Zend Framework1.11.x
发布于 2013-03-26 02:02:05
最好的解决方案,我已经在很多项目中实现过,就是把你所有的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。
发布于 2013-03-26 01:54:09
如果将所有脚本压缩到一个文件中,对于客户端性能会更好。浏览器必须做的最慢的事情之一是建立新的http连接来下载新文件。通过将您所有的JavaScript放入一个精简文件中,您可以显着提高性能,而不是拥有一堆独立的精简脚本。
另一方面,做额外的处理会损害你的服务器性能。您可以自行决定是否要牺牲服务器性能来换取客户端性能。然而,请记住,有研究表明,clientside slowdowns of as little as 100ms can affect your site's conversion rate。
https://stackoverflow.com/questions/15619452
复制相似问题