2013-03-25 64 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