JSとCSSをオンザフライ/ランタイムで縮小する方法。ランタイム/オンザフライで縮小された場合、元のコード構造をサーバーに保持できます。
多くの検索とサイトの最適化の後、CSSファイルにこのスクリプトを使用することを本当にお勧めします。
<style>
<?php
$cssFiles = array(
"style.css",
"style2.css"
);
$buffer = "";
foreach ($cssFiles as $cssFile) {
$buffer .= file_get_contents($cssFile);
}
$buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
$buffer = str_replace(': ', ':', $buffer);
$buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer);
echo($buffer);
?>
</style>
すべてのcssファイルを1つに圧縮し、それをhtmlに圧縮して、追加リクエストの数をゼロに減らします。また、スタイルをhtmlに貼り付けるよりも、独自のcompress.cssファイルを作成することもできます。
あなたの質問は実際にあるべきだと思います:ライブサーバーを確実に繰り返し更新する方法は?必要なのは自動展開スクリプトです。 個人的に 私は ファブリック を好むが、他のツールが利用可能である。
自動展開スクリプトを使用すると、ライブサーバーに移動してソースコードを更新し、展開手順(javascriptの縮小など)を実行し、Webサーバーを再起動する単一のコマンドを実行できます。
Javascriptまたはcssファイルをその場で縮小するのは本当に望ましくありません。展開時に一度行ってから、これがライブ展開かどうかを指定する変数をコードに持つ必要があります。変数がtrueの場合、ファイルへのリンクは最小化されたバージョンへのリンクである必要があり、falseの場合は通常のバージョンへのリンクである必要があります。
最小化を実行するプログラムがいくつかありますが、まだ言及されていないプログラムは JSMin です。
JavaScriptの可読性をわずかに低くし、実行時にこれを行うことが目標であれば、非常に簡単に保つことができます。わずか3行のコードで、数ミリ秒以内に完全な縮小化を実現できます。
// make it into one long line
$code = str_replace(array("\n","\r"),'',$code);
// replace all multiple spaces by one space
$code = preg_replace('!\s+!',' ',$code);
// replace some unneeded spaces, modify as needed
$code = str_replace(array(' {',' }','{ ','; '),array('{','}','{',';'),$code);
これは、構文チェックを一切行いません。これを使用すると、コードが無効になる可能性があります。 JSの行の終わりを確認してください。「;」です。どこかに行方不明?
自由に話せたら
JS/CSSファイルを最小化することは、より迅速に解析すること(および使用するディスク容量を少なくすること)を目標とします。実行時に縮小すると、その利点は完全に失われます。
おそらくあなたの最終目標を間違えているかもしれませんが、最初はこれが私の頭に浮かぶものです。
編集:@Antによる投稿は、それを明確にしてくれました。
HTML5 Boilerplate には、JS、CSS、画像などを圧縮する便利なビルドスクリプトが付属しています。見てみな!
他の回答で説明したように、「実際の」オンザフライの縮小(要求されるたびにファイルを動的に圧縮する)はあまり良い考えではありません。
Apache/Ngnixの設定を完全に制御できる場合、(一般的に)素晴らしいオプションは PageSpeed モジュールを有効にすることです。
それはまさにWebUtilities(J2EEの場合)が行うことです。こちらがリンクです。
その場で縮小とマージを行います。また、リソースが変更されていない場合、リソースの縮小または再処理の再実行を回避するキャッシングがあります。また、次の最適化にも役立ちます。
あなたがそれを面白いと思う場合に見てください。