私はMagentoで作業しており、CSSとJavascriptを1つの大きなファイルにマージする機能があります。
その長所と短所に関係なく、次の問題があります。
最終的なファイルは、以下を含むがこれらに限定されない複数のレベルでキャッシュされます。
- アマゾン クラウドフロント
- プロキシ サーバー
- クライアントのブラウザ キャッシュ
Magento は、連結された css ファイル名の MD5 合計を使用して、マージされた css ファイルの新しいファイル名を生成します。css ファイルの個別のセットを持つすべてのページが適切にマージされた css ファイルを取得するようにします。
キャッシュの問題を回避するために、css ファイルが変更されるたびに新しいハッシュが生成されるように、ファイル変更のタイムスタンプもそのハッシュに含めました。
したがって、非再検証キャッシュ スコアの利点は十分に発揮されますが、リソース リンクが変更されているため、何かが変更された場合はすぐに表示されます。
ここまでは順調ですね:
唯一の問題は、has の生成に使用されるファイル名が、通常は HTML-Head ブロックで直接参照されるファイルのみであり、それらのファイル内に css インポートが含まれていないことです。
そのため、css ファイル内にインポートされたファイルの変更は、新しいハッシュにはなりません。
いいえ、すべてのインポートを再帰的に解析してスキャンしたり、そのようなことはしたくありません。
むしろ、ディレクトリベースのソリューションについて考えました。ファイルシステム単位で「ディレクトリ内の最後の変更」を効率的に監視するものはありますか?
ext4を使用しています。
それとも、find コマンドを使用して、inode インデックスに基づいてすべての作業を行う別の方法があるのでしょうか。
そんな感じ?
ファイルシステム全体をスキャンせずに変更を即座に「見る」プログラムをたくさん見てきました。Linux で利用できる「ファイル操作監視」デーモンのようなものもあると思います。
問題は、css ディレクトリが非常に大きいことです。
誰かが私を正しい方向に向けることができますか?