私は、スタイルシートを縮小化と圧縮に対処するための最良の方法は、それを自分で行うことです見つけます。このコードをチェックアウト:
<?php
header("Content-Type: text/css");
header("Last-Modified: ".gmdate('D, d M Y H:i:s', filemtime($_SERVER['DOCUMENT_ROOT'].$_SERVER['PHP_SELF']))." GMT");
header("Expires: ".gmdate('D, d M Y H:i:s', (filemtime($_SERVER['DOCUMENT_ROOT'].$_SERVER['PHP_SELF']) + 691200))." GMT");
//This GZIPs the CSS for transmission to the user
//making file size smaller and transfer rate quicker
ob_start("ob_gzhandler");
ob_start("compress");
//Function for compressing the CSS as tightly as possible
function compress($buffer) {
//Remove CSS comments
$buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
//Remove tabs, spaces, newlines, etc.
$buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer);
return $buffer;
}
//Main style
require_once($_SERVER['DOCUMENT_ROOT']."/templates/style/style.css");
//Other style
if($php_variable) {
require_once($_SERVER['DOCUMENT_ROOT']."/templates/style/other.css");
}
ob_end_flush();
ob_end_flush();
?>
ここでは多くのことが起こっているので、説明しましょう。 CSSあるとして、ファイルの種類を設定
ヘッダ
- 。
- (週にわたりわずかに設定すると、あなたはこれを変更することができます)キャッシュ制御のための
Last-Modified
とExpires
ヘッダを設定します。
縮小化およびGZIP
ob_start
を使用して
- 、我々はこのファイルをgzipだけでなく、カスタム関数
compress
を実行するためにそれを伝えます。
compress
は、ブラウザに送信するときにすべてのCSSコメントと空白を削除します。つまり、すべてのコメントを保存して、簡単に編集できるようにソースファイルに好きなように配置することができますが、ブラウザに最小限のものを送るだけです。
スタイルスタイルシートをインポートするrequire
を使用し
- 。必要な数のスタイルシートに対してこれを行います。彼らはすべて、ユーザーに単一のHTTPリクエストで配信されます。
あなたの新しいファイルを使用
あなたはちょうどあなたが通常のCSSファイルと同じようにファイルに呼ぶことにします。この方法を使用
<style type="text/css" src="/path/to/css-script.php"></style>
結論
、あなたはいくつかの素晴らしい事をやっています。
- キャッシュの正しいヘッダーを提供し、サイトをすばやく訪問します。
- すべての内容に余分な空白やコメントが含まれないようにします。
- ファイルサイズを小さくするために、GZIPを使用してファイルを圧縮します。
- すべてのスタイルシートを1つのHTTPリクエストに組み込み、最適化に最適です。
@import
ステートメントを使用しない...それ自体は素晴らしいです。
- 複数のスタイルシートを保持し、PHPロジックを使用してそれらをインクルードするか含めないかを指定できます。
- ソーススタイルシートを間隔を置いて配置し、コメントを付けて訪問者に影響を与えないようにすることができます。
上記のcompress
機能は厳密にCSSのためのものですが、この同じ方法をJavaScriptにも使用できますので、私は省略します。
は、このキャッシュ制御技術との組み合わせで、この技術を使用し、そしてあなた自身に素晴らしいCSS/JSハンドラを構築しました:How to force browser to reload cached CSS/JS files?
動的なPHPのスタイルシートは何ですか? –
したがって、フラットファイルで動作するツールを使用して、動的に作成されたものを圧縮したいとします。それは少し聞こえません..あなたには不可能ですか? :) –
私は暗闇の中で刺すようにこれをコメントとして追加しています。静的なCSSファイルを作成し、その中に@importステートメントを含む動的なものを含めて静的なものを縮小してみてください。それが動作する場合、私は答えとしてそれを追加することを知らせてください;)私はあなたが@importを避けるべきだと知っているが、ねえ。 – picus