2

ここに問題があります。多くの Javascript と CSS ファイルがあり、縮小して提供したいのです。縮小は簡単です。YUI Compressor をセットアップし、Ant タスクを実行すると、縮小されたファイルが生成され、元のファイルと一緒に保存されます。

そのため、最終的に DocumentRoot 内のどこかに次のディレクトリ構造が作成されます。

/
   /js
      /分
         foo-min.js
         bar-min.js
      foo.js
      bar.js
      quux.js
   /css
      ...

ここで必要なのは、Apache がminサブディレクトリからファイルを提供し、縮小されたバージョンが利用できない場合は非圧縮ファイルの提供にフォールバックすることです。最後の問題は、私が解決できない問題です。

例: example.com/js/foo.jsへのリクエストがあるとします— この場合、Apache は/js/min/foo-min.jsのコンテンツを送信する必要があります。縮小されたquux.jsはないため、 /js/quux.js へのリクエストは404 ではなく/js/quux.js自体を返します。最後に、 /js/fred.jsがない場合は404 で終わるはずです。

実際には、縮小されていないファイルが運用サーバーにデプロイされないようにビルド スクリプトを設定していますが、この構成は統合サーバーや開発マシンでも役立つ可能性があります。

4

3 に答える 3

5

最終的に機能した構成は次のとおりです。

/js/.htaccess:

RewriteEngine On

RewriteBase /js

RewriteCond %{REQUEST_URI} ^/js/((.+)\.js)$
RewriteCond %{DOCUMENT_ROOT}/js/min/%2-min.js -f
RewriteRule ^(.+)$ min/%2-min.js [L]

cssディレクトリも同様です。

于 2008-10-28T13:46:14.620 に答える
3

RewriteCond を使用して、縮小されたファイルの存在を検出できます。

RewriteCond %{REQUESTURI} ^/js/(.*\.js)
RewriteCond js/min/%1 -f
RewriteRule %1 min/%1 [L]
于 2008-10-28T12:52:13.870 に答える
0

ビルド スクリプトを変更することはできますか? その場合、ファイルを縮小して同じファイル名を付けるように構成できますがant productionDeployant integrationDeploy. こうすることで、縮小プロセスはビルド スクリプト以外のすべてに対して完全に透過的になります。

于 2008-10-28T12:43:16.850 に答える