我在服务器端有一个JSMin缩小的网站。问题是实现JSMin后我的服务器变慢了
发生这种情况是因为有导入其他一些特定文件的URL,并且这些文件已添加到缩小的文件中。
现在,我想知道是否应该始终将这些特定的脚本加载到一个较大的缩小文件中,或者是否应该忘记这种方法并将脚本作为单独的文件导入。
我正在将Zend Framework 1.11.x与BundlePhu + JSMin一起使用
最佳答案
我已经在许多项目中实现的最佳解决方案是将所有JavaScript拆分为最大200kb的有限文件。我总是将JS分成两个(或很少三个)文件。第一个是库(jquery,zepto,swfobject,bootup ...)和“用户代码”(我自己的$()。clicks ...)。
我的.htaccess
文件夹中有一个/js
,它将所有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);
上述解决方案只会减慢FIRST打击的速度。向其他所有人提供了缓存的javascript。