Google
の
ごdjango-htmlmin
をHTML
を
前提
以下の
CentOS release 6.7 (Final)
Python Version
Python 2.7.8Package (必要そうな
ものだけ 抜粋)
Django (1.9.6)
Mezzanine (4.1.0)
参考サイト
- cobrateam/django-htmlmin: HTML minifier for Python frameworks (not only Django, despite the name)
- Randall Degges - The Simplest Way to Compress HTML in Django
インストールと 設定
インストール
command
pip install django-htmlmin ----------------------------------------------- Requirement already satisfied (use --upgrade to upgrade): beautifulsoup4 in /usr/local/lib/python2.7/site-packages (from django-htmlmin) Requirement already satisfied (use --upgrade to upgrade): html5lib in /usr/local/lib/python2.7/site-packages (from django-htmlmin) Requirement already satisfied (use --upgrade to upgrade): six in /usr/local/lib/python2.7/site-packages (from html5lib->django-htmlmin) Installing collected packages: argparse, django-htmlmin Successfully installed argparse-1.4.0 django-htmlmin-0.9.1 -----------------------------------------------
確認
pip list | grep django-htmlmin ----------------------------------------------- django-htmlmin (0.9.1) -----------------------------------------------
settings.py
の MIDDLEWARE_CLASSES
に 追記
当ブログは、django-request
を
request.middleware.RequestMiddleware
を
※ログ書き込んでる
と
また、GZip middleware
は
こちらに
- Cache 関連の
ミドルウェアを 使っていない 場合
# other middleware classes 'htmlmin.middleware.HtmlMinifyMiddleware', 'htmlmin.middleware.MarkRequestMiddleware',
- Cache 関連の
ミドルウェアを 使っている 場合
MIDDLEWARE_CLASSES = ( 'django.middleware.cache.UpdateCacheMiddleware', 'htmlmin.middleware.HtmlMinifyMiddleware', # other middleware classes 'django.middleware.cache.FetchFromCacheMiddleware', 'htmlmin.middleware.MarkRequestMiddleware', )
- Cache 関連の
ミドルウェアを 使っていて、 且つ、 django-request
を使っている 場合
IDDLEWARE_CLASSES = ( # django-request をtopに記述 "request.middleware.RequestMiddleware", "mezzanine.core.middleware.UpdateCacheMiddleware", "htmlmin.middleware.HtmlMinifyMiddleware", # other middleware classes "mezzanine.pages.middleware.PageMiddleware", "mezzanine.core.middleware.FetchFromCacheMiddleware", "htmlmin.middleware.MarkRequestMiddleware" )
RequestMiddleware
はHTML_MINIFY
の 設定
DEBUG
DEBUG = True
のHTML_MINIFY = False
、
DEBUG = False
のHTML_MINIFY = True
、になります。
EXCLUDE_FROM_MINIFYING
の 設定
HTML
圧縮の
README.rst
のADMIN
のURL
を
EXCLUDE_FROM_MINIFYING = ('^admin/','^ja/admin/','^admin_keywords_submit')
^admin_keywords_submit
について
mezzanine
でblog
投稿をURL
にajax
リクエストを
上記をblog
投稿が
invalid literal for int() with base 10: '<html><head></head><body>'
KEEP_COMMENTS_ON_MINIFYING
の 設定
デフォルト動作だと、
削除したくない
KEEP_COMMENTS_ON_MINIFYING
をTrue
に
KEEP_COMMENTS_ON_MINIFYING = True
これで
HTTP
サーバのHTML
圧縮が
HTMLの 圧縮要領の 説明
出力されたHTML
全ての
それなりに
pre
タグ、script
タグ、 textarea
タグ内は、 スペースも 改行も 除去しない。
htmlmin/minify.py
内に
EXCLUDE_TAGS
に
EXCLUDE_TAGS = set(["pre", "script", "textarea"])
htmlmin/minify.py
内に
条件付きKEEP_COMMENTS_ON_MINIFYING
がFalse
の
除去されません。
# see http://en.wikipedia.org/wiki/Conditional_comment re_cond_comment = re.compile(r'\[if .*\]>.*<!\[endif\]', re.MULTILINE | re.DOTALL | re.UNICODE) re_cond_comment_start_space = re.compile(r'(\[if .*\]>)\s+', re.MULTILINE | re.DOTALL | re.UNICODE) re_cond_comment_end_space = re.compile(r'\s+(<!\[endif\])', re.MULTILINE | re.DOTALL | re.UNICODE)
適用後、
問題なく
issues を
パターンに
ページ構成に
HTML
圧縮後の PageSpeed Insights
の 得点 に ついて
HTML
圧縮後の
下が
条件付き
<script src="/static/CACHE/js/4462284b3590.js" type="text/javascript"></script><!--[if lt IE 9]><script src="/static/js/html5shiv.js"></script> <script src="/static/js/respond.min.js"></script><![endif]--></head>
PageSpeed Insights
はChrome
だと、以上です。
コメント