PHPでgzip圧縮する方法 ‬‬極限までの圧縮をかけて表示最速への道のりまとめ

著者:
投稿日:
更新日:
久しぶりに新しいwebサービス作ろうと立ち上げた‪「Judge」‬またもやメディア形式のサービスとして出発しますが、このサービスはSharetubeでダメだったポイントを徹底的に潰してやろうとひとまず圧縮関連をやりましたので忘備録としてここに置いておきます。

圧縮の全体図

基本はgzipを使用して圧縮を行いますが、css、htmlも圧縮する前に無駄な改行などを省いて圧縮をしています。

・css圧縮

・html圧縮

・gzip圧縮(html、gzファイル生成)

・キャッシュ

・画像圧縮


この5点で表示最速を目指します。

css圧縮

読み込みたいcssを変数化して合体させつつ圧縮していきます。
// 読み込みたいcssを変数化

$core_css = file_get_contents(PATH."assets/css/core.css");

$common_css = file_get_contents(PATH."assets/css/common/common.css");

$matome_css = file_get_contents(PATH."assets/css/matome/common.css");

$css = $core_css.$common_css.$matome_css;

// css圧縮

$css = preg_replace[^]+([^/][^]+)/!", "", $css" type="text/plain">;

// コロンの後の空白を削除する

$css = str_replace;

// タブ、スペース、改行などを削除する

$css = str_replace( array("

", "", "

", " ", " ", " ", " "), "", $css);

これでひとまず圧縮したcssが完成しました。

html圧縮

上記で圧縮したcssを差し込みつつ圧縮したいhtmlを変数に入れて圧縮します。
$gzip_article_html = 上記で圧縮したcssを差し込み圧縮したいhtmlを入れる;


// HTML圧縮

$search = array(

"/>[^S ]+/s", // strip whitespaces after tags, except space

"/[^S ]+

"/(s)+/s" // shorten multiple whitespace sequences

);

$replace = array(

">",

"<",

"\1"

);

$gzip_article_html = preg_replace;

これでひとまず圧縮したhtmlが完成しました。

gzip圧縮

圧縮をかけたhtmlを更にgzipにて圧縮して最速を狙いましょう。
// articleファイル生成

file_put_contents;


$file_org = 生成したい場所/index.html";

$file_gzip = $file_org.".gz";

// 元ファイルの内容を読み込む

$code = file_get_contents($file_org);

// gzip圧縮処理して同一フォルダにファイルを作成

$gzip = gzopen($file_gzip ,"w9");

gzwrite($gzip ,$code);

gzclose($gzip);

関数:gzopen($file_gzip ,"w9");のw9という箇所を1〜9にすると圧縮率が変わりますので最適な圧縮率にしましょう。


これでindex.htmlとindex.html.gzが生成されます

これだけでは動きませんので下記に書いた内容を忘れないでくださいね。

.htaccessでgzipを利用可能にする

RewriteEngineをOnにする

Options +FollowSymLinks


内部ディレクトリ非表示

Options -Indexes


RewriteEngine on

RewriteCond %{HTTP:Accept-Encoding} gzip

RewriteCond %{REQUEST_FILENAME}.gz -s

RewriteRule .+ %{REQUEST_URI}.gz


ForceType text/css

AddEncoding x-gzip .gz


ForceType application/x-javascript

AddEncoding x-gzip .gz


ForceType text/html

AddEncoding x-gzip .gz


(.php)

ForceType text/html

AddEncoding x-gzie>

材料

ツナ缶 80g

ケーパー酢漬け 大さじ1

マヨネーズ 大さじ3

胡椒 少々

アボカドとプチトマトのディップ

材料

アボカド 1/2個

プチトマト 5個

●マヨネーズ 大さじ1

●プレーンヨーグルト 大さじ1

●塩こしょう 少々

●砂糖 少々

サブウェイ風BLTバゲットサンドイッチ

材料

フランスパン(または好みのパン) 1/3本(12〜13センチ)

水 ほんの少し

有塩バター(マーガリン) 適量 

ベーコン(ハーフ) 4枚

粗びきブラックペッパー 適量

レタス 1/2枚

トマトスライス 2枚

ブラックオリーブスライス 4切れ

玉ねぎスライス 好みの量

パルミジャーノレッジャーノ(削る) 5gくらい

シーザーサラダドレッシング(市販) 適量

■ <その他>

オーブンシート、耐熱紙、可愛いワックスペーパーなど 適量

バジル風味のハムチーズバケットサンド♬

材料

バケット お好きな量

ハム お好きな量

チーズ お好きな量

レタス お好きな量

マヨネーズ 適量

バジル 適量

ブラックペッパー 適量

アボカドと焼鮭ディップのバケットサンド

材料

バケット 2人分適量(約3分の2本)

アボカド 1個

鮭フレーク 30g

レモン汁 小さじ2分の1~

オリーブオイル 小さじ1

ミックスビーンズ 50g

カッテージチーズ 20g

ブラックペッパー お好みで

カマンベールチーズとハムのバゲットサンド

材料

バゲット 12cm位に切ったものを2本

バター(マーガリン) 適量

ロースハム 4枚

カマンベールチーズ 1/3くらい

レタス 1枚

ホット*バゲット*サンド

材料

バゲット 10cmくらい

ツナ缶 小1/2缶

チーズ(溶けるもの) 適宜

バジルソース 大さじ1くらい

バター 少々

☆うちのバケットサンド☆

材料

バケット 1本

ハム 9枚

レタス 挟める分

マヨネーズ お好みの量

フランスパンでサンドウィッチ

材料

バケット 1本

レタス 5〜6枚

目玉焼き(両面焼いた物) 1個

ゆで卵 1個

マヨネーズ 大1

牛乳 適量

ベーコン 2枚

ハム 2枚

マーガリン 適量

フランスパンのカラフルサンドイッチ♪

材料

フランスパン ゆきらいんさんのレシピID :426584

ミートソース あたさんのレシピID :201776

★ゆで卵 2個

★マヨネーズ 適量

★塩胡椒 適量

ハム 4枚

きゅうり 1本の半分

レタス 2~3枚

マヨネーズ 適量

粒マスタード 適量

バター 適量

著者プロフィール
Sharetube