Webサイト高速化のために行ったこと…今回は第四回です。
Djangoで出力したHTMLを圧縮する方法についてまとめました。
1.圧縮を有効にする(html, css, jsなどの静的コンテンツ)
2.ブラウザのキャッシュを有効にする(静的コンテンツにキャッシュを導入する)
3.CSSを縮小する
4.HTMLを縮小する(当記事)
5.スクロールせずに見えるコンテンツのレンダリングをブロックしている JavaScript/CSS を排除する(※一部)
6.読み込み中のときにloading indicatorを表示する(これはユーザー体験を高めるためのおまけ)
では、さっそく行ってみます。
Djangoって機能がモリモリなので、HTMLの圧縮も
標準で入っていそうなものですが、残念ながらなさそうです。(Django1.8)
というわけで、外部アプリを pip でサクッとインストールします。
$ pip install django-htmlmin
依存パッケージも一緒にインストールされます。MIDDLEWARE_CLASSES = (
...
# 以下2行追記
'htmlmin.middleware.HtmlMinifyMiddleware',
'htmlmin.middleware.MarkRequestMiddleware',
)
# minify HTML
EXCLUDE_FROM_MINIFYING = (
'^admin/',
)
Ajaxを利用したフォーム周りで不具合が起きたりするケースがあるようなので、
動作確認は必須です。
これで導入は完了です。サーバーを再起動してソースを確認してみます。
<!DOCTYPE html><html lang="ja"><head><meta content="a4u2bJNGWa13LWeuS90PTw9N_o1wSg7DInmhmsVKOKs" name="google-site-verification"/><title>photo.pics</title><meta charset="utf-8"/><meta content="width=device-width,initial-scale=1" name="viewport"/><meta content="風景写真好きWEBエンジニアが日々の発見をゆるやかにまとめつつ、ときどき風景写真も投稿しつつほげほげするサイト。" name="description"/><meta content="photo.pics,4to.pics,カメラ,風景,写真,技術,web,フロントエンド,バックエンド,サーバー,server,Python,Django,blog,ブログ" name="keywords"/><style>#loading { width: 100%; height: 100%; position: fixed; top: 0; left: 0; z-index: 9999; background-color: #ffffff; background-image: url(/images/loading.gif); background-position: center center; background-repeat: no-repeat; background-attachment: fixed; }</style></head>
個人的にちょっと気になったのは、HTMLを圧縮してもしなくても、Google PageSpeed Insight上では
圧縮判定されてたところです。なんでだろう?
1.圧縮を有効にする(html, css, jsなどの静的コンテンツ)
↑これを対応した時点で圧縮判定されちゃってたようです。^^;
とはいえ、たとえ 1 byte でも容量は小さいほうがいい!ってことで圧縮対応してみた次第ですー。
mac に pip をインストールする
mac は標準で python が入っていますが、パッケージ管理の pip がインストールされていないので入れてみました。
2017/05/26 09:00
[GAS] Google Drive の特定フォルダ配下のフォルダ・ファイルの権限を一括で移譲する
Google Drive の特定フォルダ配下のファイル・フォルダの権限を一括で移譲するツールを Google Apps Script で作りました。
2018/11/10 15:54
[Windows] Ophcrack を使ってユーザーパスワードを解析する方法
家族で使っていた Windows7 のログインパスワードを忘れたため、Ophcrack を使って解析したときの記録です。
2017/09/30 21:00
[shell] フォルダ内にある大量の ZIP ファイルをまとめて解凍する
とある ZIP を解凍すると中に大量の ZIP が居たときに幸せになれるコマンドを紹介します
2018/06/19 23:45
[MySQL] データファイルから DB を復元する
先日 MySQL が再起動できなくなる問題が発生し、急遽データファイル(.frm, .ibd)から復元しました
2018/11/25 12:44