2

アセットを縮小するとファイル サイズが小さくなり、ページの読み込みにかかる時間が短縮されるため、アセットを縮小するのが良いことはわかっています。また、アセットを組み合わせると HTTP リクエストの数が減り、ページの読み込みにかかる時間が短縮されるため、アセットを組み合わせるとよいこともわかっています。これは重要なことです。なぜなら、まだダイヤルアップを使用している人がいて、モバイル デバイスの接続が高速ではないことが多いからです。

私が苦労しているのは、アセットの縮小と結合をワークフローに簡単に追加する方法です。CakePHP を使用してローカルで開発し、バージョン管理には Git を使用しています。ライブに移行するときは、ライブ サイトをホストしているサーバーに SSH で接続し、最新のコミットをマージします。

独自のソリューションを展開する方法は次のとおりです(縮小のみを考慮し、テストされていません!):

1.) 私の開発環境の「app/Config/core.php」ファイルの「デバッグ」レベルは常に 0より大きい値に設定され、本番環境では常に 0 になります

2.) ファイル システムでは、すべての CSS と JavaScript は次のように外部ファイルに保存されます。

  • app/webroot/css/used-site-wide.css
  • app/webroot/css/used-on-a-few-pages.css
  • app/webroot/css/used-on-one-page.css
  • app/webroot/js/used-site-wide.js
  • app/webroot/js/used-on-a-few-pages.js
  • app/webroot/js/used-on-one-page.js

echo $this->Html->script(array('used-on-a-few-pages', 'used-on-one-page'), array('inline' => false));3.)ビュー ファイルで使用するのではなく、次のように使用します。

Configure::write('external_js', array('used-on-a-few-pages'));
Configure::write('inline_js', array('used-on-one-page'));

echo $this->fetch('script');4.)レイアウト ファイルで使用するのではなく、これを使用します。

if (Configure::read('external_js') !== null) {
    $external_js = Configure::read('external_js');

    if (Configure::read('debug') == 0) {
        foreach ($external_js as &$external_js_filename) {
            $external_js_filename .= '-min';
        }
    }

    echo $this->Html->script($external_js);
}

if (Configure::read('inline_js') !== null) {
    $inline_js = Configure::read('inline_js');

    if (Configure::read('debug') == 0) {
        foreach ($inline_js as &$inline_js_filename) {
            $inline_js_filename .= '-min';
        }
    }

    echo "\n<script type=\"text/javascript\">\n\t/* <![CDATA[ */";

    foreach ($inline_js as $inline_js_filename) {
        echo file_get_contents(JS . Configure::read('inline_js') . '.js');
    }

    echo "\n\t/* ]]> */\n</script>";
}

5.) 最後に、コミットが行われるたびに縮小されたアセットを作成するように Git を設定します。

このセットアップを使用すると、開発中の非縮小アセットと本番環境の縮小アセットを使用できます。問題は、必要がなければ車輪を再発明したくないということです。車輪の再発明は、重要かつ珍しい問題を解決する場合にのみ行うべきだと思います。

皆さんはこれをどのように処理しますか?

ありがとう!

4

3 に答える 3

2

Mark Story の AssetCompress プラグインよりも単純なものを探している場合は、 https ://github.com/joshuapaling/CakePHP-Combinator-Plugin をチェックしてください。

JS と CSS ファイルを結合して縮小し、デバッグ モードが 0 の場合にのみ結合/縮小することも簡単にできます (GitHub の .markdown にその例があります)。含まれている JS/CSS ファイルの変更日を使用して、新しいキャッシュ ファイルをいつ作成する必要があるかを判断します。

Mark Story のプラグインほどフル機能ではありませんが、シンプルで機能し、セットアップには 10 ~ 15 分しかかかりません。

于 2012-06-24T01:17:14.617 に答える
1

私は最近、この状況に遭遇し、あまり信頼できない jsmin を使用する (現在は廃止された) Combinator プラグインを試しました。それで、私はMark Storyのプラグインを試してみましたが、これは複雑で、ファイルが変更されたときにビルドを自動的に行うことさえしません。

したがって、ここで確認できる独自の単純なヘルパーを作成しました: https://github.com/Highstrike/cakephp-compressor。すべてがreadmeファイルで説明されており、非常に使いやすく、jsの縮小にGoogleクロージャーを利用しています. また、HTML の縮小も処理します。

これは単なるヘルパー ファイルであり、コントローラーや構成は必要ないため、maurymmarques のソリューションよりもさらに簡単です。

私はそれが誰かを助けることを願っています。

于 2015-05-28T15:55:18.727 に答える
0

このプラグインも確認できますhttps://github.com/maurymmarques/minify-cakephp インストールと構成は非常に簡単です。

于 2014-05-05T17:59:59.743 に答える