ちょっとでもページの読み込みが早くなればいいな~と悪戦苦闘。
HTMLのCompressを自前で組み込む!
index.php
中身はこれだけを書く。HTML要素は『contents.php』にがっつり書く。
<?php
function html_compress( $filename ){
$contents = "";
if (is_file($filename)) {
ob_start();
include $filename;
$contents = ob_get_contents();
ob_end_clean();
$contents = preg_replace('/<!--[\s\S]*?-->/s', '', $contents);// コメントを削除『<!-- -->』
$contents = preg_replace('/\/\*[\s\S]*?\*\//s', '', $contents);// コメントを削除『/* */』
$contents = preg_replace('/\/\/.*/', '', $contents);//1行コメントを削除『//』
$contents = preg_replace('/\t/s', '', $contents);// タブを削除
$contents = preg_replace('/\r\n|\r|\n/s', '', $contents);// 改行を削除
$contents = preg_replace('/ /s', '', $contents);// 半角空白2つを削除
return $contents;
}
return false;
}
echo html_compress('contents.php');
?>
※ちなみに、画面にちゃんと表示ができない場合は、13行目の一行コメントと、15行目の改行削除をコメントアウトして原因を調べること。
ページのソースコードや、error_logなどを確認する。
(『http://aaa.com』なんて記述がある場合は、『//』以降が消されてしまって『http:』に変換されてバグることを確認済み。現在未対応。)
contents.php
中身は普通のHTML&PHP。たとえばこんな感じ。
<?php
global $title = "タイトル";
?>
<HTML>
<BODY>
<p><?php echo $title; ?></p>
略
</BODY>
</HTML>
コツ
『file_get_contents()』ではなく『ob_get_contents()』を使用すること。
ob_get_contents()を使用すると、PHP実行済みのHTMLコードを出力してくれる。
file_get_contents()を使用すると、PHPが未実行なので、PHPタグがサイトに表示されてしまう。
使い方
ob_start();
include 'contents.php';
$contents = ob_get_contents();
ob_end_clean();
【OK】ob_get_contents()をした場合
PHPが実行されて、HTMLコードが吐き出される。
<HTML><BODY><p>タイトル</p>略</BODY></HTML>
【NG】file_get_contents()をした場合
PHPが未実行なので、PHPタグがついたままのHTMLコードが吐き出される。
↓こんな感じ。
<?phpglobal $title = "タイトル";?><HTML><BODY><p><?php echo $title; ?></p>略</BODY></HTML>