9

Symfony 2 Assetic 1.0.2 の開発を容易にする方法を探しています。アセットのダンプ/公開に Assetic を使用しています。

現在、バックグラウンドでこのコマンドを実行し続けています。

php app/console assetic:dump --watch

JS または CSS ファイルに加えたすべての変更は、ブラウザによってリソースが取得される public ディレクトリに自動的にダンプされます。

ただし、これには問題があります。

  1. 新しい CSS/JS ファイルを追加すると、何らかの理由でダンプされません。ウォッチを停止し、キャッシュをクリアして、ウォッチを再度開始する必要があります。

  2. それは一種の低速で、常に 5% から 20% の CPU 時間を消費します。

Assetic を使用した開発に代わるものはありますか? use_controller: trueコントローラー ( Assetic 用) を介してリソースを提供するアプローチを既に試しましたが、さらに遅くなりました (事実に直面してみましょう。PHP は静的データを提供するためのものではありません)。

4

4 に答える 4

4

Assetic私にとって、これは私が見つけた最速の開発方法です。アセット生成の速度を向上させるためのより良いワークフローを見つけようとしましたが、何も見つかりませんでした。

コンポーネントの master ブランチには、次の方法でこの問題を解決できる可能性があるいくつかの作業Symfony2ResourceWatcherあります。

  1. などのネイティブ リソース ウォッチャーに依存して監視プロセスを高速化するinotify
  2. リソースが正しくダンプされるように、リソースが追加/削除されたときの問題を修正しました。

このPRでコンポーネントの進行状況を確認できます。

誰かがアセットまたはまったく異なるワークフローで開発をスピードアップするためのいくつかのトリックを提供してくれることを願っています.

よろしく、
マット

于 2012-05-25T13:17:51.287 に答える
3

--no-debug遅くするために、とで実行できます--forks=4。composer を介して Spork 依存関係をインストールし、実行しますapp/console assetic:dump --no-debug --forks=4

より多くのコアがある場合は、さらにフォークを追加します。コアを空けておきたい場合は、数値を下げてください。なぜ 4 倍速くならないのかはわかりませんが、さまざまなアセット ジョブをさまざまなコアに割り当てることについては、あまりインテリジェントではないことは間違いありませんが、それは出発点です。

簡単に試したいくつかのこと:

time app/console assetic:dump

real    1m53.511s
user    0m52.874s
sys     0m4.989s

time app/console assetic:dump --forks=4

real    1m14.272s
user    1m12.716s
sys     0m5.752s

time app/console assetic:dump --forks=4 --no-debug

real    1m9.569s
user    1m6.948s
sys     0m5.844s

PHP . _ --watch_--watchwhile (true)

于 2015-02-04T16:41:00.220 に答える
1
  1. 開発用と本番用に異なるフィルターを構成します。本番環境では、JS と CSS を縮小して醜くしたいのですが、これは開発中の時間の無駄です。

  2. assetic.debugそれが偽であることを確認してください。これにより、JS ファイルと CSS ファイルが確実に連結され、すべての JS と CSS をそれぞれ 1 つの HTTP リクエストで取得できるようになります。

  3. コントローラーを使用していて ( assetic.use_controllertrue )、ブラウザーの開発者ツールボックスが開いている場合は、 [キャッシュを無効にする]チェックボックスをオフにしてください(Chrome では、このチェックボックスは [ネットワーク] ペインにあります。Firefox では、設定ペインにあります)。 . これにより、ブラウザーは If-Modified-Since リクエストを送信できるようになります。ファイルがサーバー上で変更されていない場合、サーバーは304 Not modifiedアセットを再コンパイルせずに戻り、ブラウザーはブラウザー キャッシュから最新バージョンを使用します。

  4. Assetic を使用して CDN からファイルをロードしないでください。ファイルをサーバーにダウンロードするか (手動で、Bower などを使用して)、HTML テンプレートに追加する<script src=…&gt;か、<link rel=stylesheet href=…&gt;直接 CDN からファイルをロードします。

于 2016-01-15T17:27:36.993 に答える
1

開発中はこれを使用します:

php app/console assets:install web --symlink
于 2012-08-22T10:53:59.233 に答える