これは私のどこかの間違いかもしれませんが、とにかく、複数のcss/jsを1つのファイルに縮小する機能が組み込まれているfat freeフレームワークを使用しており、これは最適化に適していると思っていましたが、逆になっています. js ファイルを個別に保持すると (そしてそれらは html の最後にあります)、追加した場合の合計サイズは約 364kb になり、1.5 秒以内に並列でロードされるようです。ただし、結合バージョンを読み込もうとすると、1 つのファイルのサイズは約 343kb になりますが、読み込みに約 10 秒かかります。
ただし、私の縮小ロジックは少し異なります。テンプレートで最初に、関数を呼び出してファイルをロードします。
<script type="text/javascript" src="{{ @BM->minify('js','js/',array(
'vendor/jQui/jquery-ui-1.10.4.custom.min.js',
'vendor/datatables/jquery.dataTables.min.js',
'vendor/bootstrap.min.js',
'vendor/smartmenus-0.9.5/jquery.smartmenus.min.js',
'vendor/smartmenus-0.9.5/addons/bootstrap/jquery.smartmenus.bootstrap.min.js',
'vendor/smartmenus-0.9.5/addons/keyboard/jquery.smartmenus.keyboard.min.js',
'plugins.js',
'main.js'
)) }}"></script>
この関数は適切なセッション変数を設定し、パスを返します。
public function minify($type='',$folderpath='css/',$files=array()){
$filepaths = implode(",",$files);
$this->f3->set('SESSION.UI_'.$type,$this->themeRelFolder().'/'.$folderpath);
$this->f3->set('SESSION.ReplaceThemePath_'.$type,$this->themeRelFolder());
$this->f3->set('SESSION.m_'.$type,$filepaths);
return($this->f3->get('BASE').'/minify/'.$type);
}
パスは、minify メソッドを呼び出して実際の縮小されたコンテンツを吐き出すコントローラーにマップされます。
public function index($f3, $params) {
$f3->set('UI',$f3->get('SESSION.UI_'.$params['type']));
if($params['type']=='css'){
echo str_replace("<<themePath>>","../".$f3->get('SESSION.ReplaceThemePath_'.$params['type'])."/",\Web::instance()->minify($f3->get('SESSION.m_'.$params['type'])));
}else
{
echo \Web::instance()->minify($f3->get('SESSION.m_'.$params['type']));
}
}
このようにして、テンプレートに必要な数のファイルを縮小し、テーマ内のフォルダーのネスト構造に関係なくファイル パスを維持できるようにしました。
私は何を間違っていますか?
PS: 実際のサーバーではなく、ローカルの wamp セットアップでこれをテストしているため、ロード時間は実際の Web サーバーとは明らかに異なります。