私はMagentoで働いていて、CSSとJavascriptを1つの大きなファイルにマージする機能があります。Linux上のディレクトリを効率的に監視する方法は?
かかわらず、その長所と短所は、次のような問題がある:
最終的なファイルが含まれますが、複数のレベルでキャッシュされますがこれらに限定されない:
- アマゾンCloudFrontの
- プロキシサーバ
- クライアントブラウザのキャッシュ
Magentoのは、MD5を使用しています結合されたcssファイルの合計を計算し、結合されたcssファイルの新しいファイル名を生成します。 Cssファイルの異なるセットを持つすべてのページが適切なマージされたCSSファイルを取得するようにします。
キャッシングの問題を回避するために、ファイルの変更タイムスタンプをそのハッシュに含めて、CSSファイルが変更されるたびに新しいハッシュが生成されるようにしました。
したがって、リソースのリンクが変更されたため、何らかの変更が加えられた場合でも、キャッシュのスコアは変更されません。
これまでのところは良い:
唯一の問題は、インクルードを生成するために使用されているファイル名は、通常、直接HTML-ヘッドブロックで参照されるだろう唯一のものであり、そしてドン」していること、ですtには、これらのファイルの中にcssインポートが含まれています。。
したがって、cssファイル内にインポートされたファイルの変更によって新しいハッシュが作成されることはありません。
いいえ私は本当に再帰的にすべてのインポートを解析し、そのようなものをスキャンしたくありません。
私はむしろディレクトリベースのソリューションを考えました。ファイルシステムごとに「ディレクトリ内の最後の変更」を効率的に監視する方法はありますか?
私たちはext4を使用しています。
または、別の方法があります。findコマンドを使用すると、inodeインデックスに基づいてすべてのジョブが実行されるのでしょうか?
これは何ですか?
私は、ファイルシステム全体をスキャンすることなく、すぐに "変更"を見るプログラムをたくさん見てきました。私は、Linux上で利用可能な「ファイル操作監視」デーモンもあると信じています。
問題は、cssディレクトリがかなり大きいことです。
誰でも正しい方向に向けることができますか?
これまでのベストソリューション!私は本当にそれが好き。バックグラウンドで仕事を聞く必要がない、より独立したソリューションを望んでいましたが、本当に好きです。 –
さて、PHPは普通はコンパイルされたプログラムではずっと遅く、各ページの読み込みをチェックする方がはるかに高価で、変更があるたびに1回acionをトリガーします(変更はまれです)。しかし、スピードを気にしなければ、phpのreaddir()関数を使ってフォルダをループし、各ファイルに対してphpのstat()関数を使ってmtime(最終更新時刻)を得ることができます。変更を適用する前に少し遅延があってもパフォーマンスを大幅に向上させることができます。このチェックはN分ごとに実行できます(データベース/一時ファイル/ etc ...を使用して最後のチェック時間を保存できます)。 – XzKto