PageSpeed Insights に、
この
しかし、
この記事では、
参考
- クリティカルCSSの
動的な インライン化 - Hail2u - Critical を
使用して、 レンダリングブロック CSS を 排除する - rakuishi.com - Smashing Magazineの
パフォーマンス改善ケースが 凄まじい 件 - MOL - filamentgroup/loadCSS: A function for loading CSS asynchronously
静的ページ、 動的ページ に 共通する 基本的な critical CSS の 読み込み方
以下のような
基本的に、
1. critical CSS を
critical CSS を
inline で HTML 上に 記載する。 画面全体の
CSS は javascript で、 非同期で 読み込む 1
[1] HTML のサイズが 14KB を 超えると、 あまり 意味が ないようで、 試しに 記事ページの バイト数を 見ていたら、 40KB くらい あって、 HTML の 組み方を 変えると 違うのかもしれませんが、 bootstrap 使っている 限りは、 14KB 以下するのは 難しそうに 思います。
2.
は、
一旦2.
は1.
、3.
の
Critical で critical CSS を 作成する
Critical CSS の
[2] 全て
addyosmani/critical: Extract & Inline Critical-path CSS in HTML pages
filamentgroup/criticalCSS: Finds the Above the Fold CSS for your page, and outputs it into a file
filamentgroup は、loadCSS
の作成元でもあります。
現状(2017/09/24) で、
Docker image を 作り、 CLI を 実行する
critical を
kemsakurai/docker-critical - Docker Hub
critical CSS を
出力する
input に、対象ページURLを 指定すると 対象ページの critical CSSが 出力されます。
--minify
をオプションで critical CSSが 圧縮されます。 docker run -v "$(pwd)":/critical_result -it kemsakurai/docker-critical \ /bin/sh -c 'critical https://www.monotalk.xyz --base ./ --minify > /critical_result/critical.css'
critical CSS を
含むHTMLを 出力する docker run -v "$(pwd)":/critical_result -it kemsakurai/docker-critical \ /bin/sh -c 'critical https://www.monotalk.xyz --base ./ --minify --inline > /critical_result/critical.html'
出力ファイル 上記コマンド実行すると、
カレントディレクトリに、 css、 htmlが 出力されます。 ls critical.css critical.html
Docker image 上で、 gulp タスクと して 実行する
critical の
blog の
gulpfile.js
var gulp = require('gulp'); var critical = require('critical'); gulp.task('critical_blog_list', function() { return critical.generate({ src: 'https://www.monotalk.xyz', dest: '/critical_result/critical_blog_list.css', minify: true }); }); gulp.task('critical_blog_detail', function() { return critical.generate({ src: 'https://www.monotalk.xyz/blog/wicket-browser-%E3%81%AE%E6%83%85%E5%A0%B1%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B/', dest: '/critical_result/critical_blog_detail.css', minify: true }); }); gulp.task('critical_about', function() { return critical.generate({ src: 'https://www.monotalk.xyz/about', dest: '/critical_result/critical_about.css', minify: true }); }); gulp.task('default',['critical_blog_list','critical_blog_detail','critical_about']);
コマンド 無理矢理感が
強いですが、 以下コマンドで、 localで 作成した gulpfile.jsを カレントディレクトリに 配置して、
docker 上のgulp install ディレクトリに コピーして、 gulp コマンドを 叩きます。 docker run -v "$(pwd)":/critical_result -it kemsakurai/docker-critical \ /bin/sh -c 'cp /critical_result/gulpfile.js ./ && gulp'
OUTPUT
各ページのcritical CSSが 出力されました。 % ls ------------------------------ critical_about.css critical_blog_detail.css critical_blog_list.css gulpfile.js
cli でも
Django から
css の 非同期読み 込みの ために、 loadCSS を 使う
critical CSS の
link タグでのlocadCSS
と
filamentgroup/loadCSS: A function for loading CSS asynchronously
Github 上には、min.js
が
[3] 圧縮した
loadCSS.min.js
yepnope.js
とlocadCSS
よりも
ページの
現状、loadCSS
を
Django-compressor と loadCSS の 兼ね合い
このブログでは、
Django compressor は5ebef948ce2c.css
のような
Issueへの
リンク
loadCSS integration · Issue #730 · django-compressor/django-compressorsublcass の
実行例
DeferredCSSCompressor for django-compressor
まとめ
critical CSS の
Django の
以上です。
コメント