実行時間が非常に短いらしいのでさっそく軽く実行時間をテストしてみます。事前にGo言語を用意し、Minifyを以下のコマンドでインストール。html-minifierのインストール方法は長くなるので公式を参照頂くとして割愛します。
$ go get github.com/tdewolff/minify/cmd/minify
例によって検証用スクリプトを軽く組んでみました。
dir = ARGV[0]
def html_minifier(from, to)
cmd = <<-CMD
html-minifier #{from} \
--collapse-boolean-attributes \
--collapse-whitespace \
--remove-attribute-quotes \
--remove-comments \
--remove-empty-attributes \
--remove-redundant-attributes \
--remove-script-type-attributes \
--remove-style-link-type-attributes \
--html5 \
--use-short-doctype \
--minify-js \
--minify-css > #{to}
CMD
`#{cmd}`
end
minify_size = html_minifier_size = original_size = 0
minify_time = html_minifier_time = 0
files = Dir.glob("#{dir}/**/*.html").each {|file|
original_size += File.size(file)
t = Time.now
`minify #{file} > #{file}.min`
t = Time.now - t
minify_size += File.size("#{file}.min")
minify_time += t
t = Time.now
html_minifier(file, "#{file}.min")
t = Time.now - t
html_minifier_size += File.size("#{file}.min")
html_minifier_time += t
}
puts "file num: #{files.length}"
puts "original: #{original_size} bytes"
puts "Minify: #{minify_size} bytes, #{minify_time} sec"
puts "html-minifier: #{html_minifier_size} bytes, #{html_minifier_time} sec"
軽く確認しただけでも凄い結果です。Minifyは非常に高速に動作する上に圧縮率も良いです。検証にはGo-1.8.1 + Minify-2.1.0、Node.js-7.8.0 + html-minifier-3.0.2を使用してます。html-minifierはちょっと古めですがご容赦ください。
$ ruby test.rb test_dir
file num: 93
original: 1716365 bytes
Minify: 1477416 bytes, 1.4351485620000002 sec
html-minifier: 1497892 bytes, 70.05997373700002 sec
これだけ高速に動作するならページ数が多少多くてもMinifyでHTML最小化→gzip/brotliで圧縮配信する価値がありそうです。 HTML最小化→gzip/brotliの効果はこちら。 html-minifier→zopfliをMinify→brotliにしたら半日掛かっていたバッチが30分以下になり、体感でもわかるくらいページ読み込みが早くなりました。
0 件のコメント:
コメントを投稿