0

このナンセンスなデータ URI 全体はすぐに古くなってしまいますが、それまでは、少なくとも 1 周は流行に乗ります。

そのため、リモート ロケーションの代わりにデータ URI を使用するように更新したい CSS ファイルがあります。少しの PHP と正規表現を使用してプログラムでこれを行うことができると考えていました。以前に見たデータ URI リダイレクトのアイデアほど巧妙で透過的ではありませんが、将来修正するためのプッシュ ボタン「再構築」オプションを提供します。ファイルまたは更新。しかし、メンタルブロックにぶち当たりました。これがアイデアです:

  1. Fix-URI スクリプトは、適切な場所に保存されているすべての css ファイルをトラバースし、次のパターンを grep しますurl(".*")(後であいまいさが追加されます)

  2. スクリプトは、ファイルがローカルで存在することを確認し、コンテンツをデータ uri に噛み込みます

  3. スクリプトは、見つかった url を新しいデータ uri に置き換えます。

  4. 完了すると、スクリプトは更新されたファイルなどを保存します。

しかし、もちろん、これは一度しか機能しないことに気づきました。その後、URLはすでにデータuriになります。「data:」のチェックを追加することはできますが、私にとっての本当のジレンマは次のとおりです。データ uri が最新であることをどのように知ることができますか? 「icon-xyz.png」を光沢のあるより良いものに置き換えると、各データ uri を毎回チェックする必要があるだけでなく、元のファイル名と比較する必要があり、これは標準属性ではありません。現在のデータ uri の一部。

私が望んでいないのは、php 変数を使用した動的な css ファイルです。また、正規表現の馬が納屋の外にある場合でも、ソリューションをできるだけ抽象化したままにしたいと思います。

1 つ考えられたのは、変換された画像を単純に削除するか、少なくとも「変換された」ディレクトリに移動することでした。このようにして、更新されたバージョンまたはプレーン URL をまだ使用している新しい画像をすぐに見つけることができます。次に、変換済みの古いバージョンのイメージをデータマジックで変換し、grep して、見つかった場所を新しいファイルに置き換えることができます。

しかし、必要以上に複雑にしてしまい、明白で便利なものが欠けているのではないかと心配しています。

クイックアップデート

可能な限り抽象化することには、ファイル名を反映するための css コメントや新しいプロパティの上のコメントアウトされたプロパティなどの解決策を回避するか、少なくとも抵抗することが含まれます。

4

1 に答える 1

0

私の解決策、上書きしないでコピーする

css.css -> コンパイル済み/css.css

変更時に、css.css をコンパイル済み/css.css に再コンパイルします。

私はコンパイル済みのサイトでこのようなことをしています/v{1-9+},css1,css2.css

css ファイルが存在しない場合は、Web サーバーが生成を自動的に処理し、css ファイルをコンパイルして結合する generatecss.php を呼び出します。

バージョン番号はキャッシュがないことを保証し、2 番目と 3 番目は元の css1.css と css2.css から作成された結合されて最適化された css ファイルです。

ただし、css ファイルはブロックされており、大きな css ファイルを使用することは必ずしも良い考えではないことに注意してください。

于 2013-09-21T18:57:01.480 に答える