Webサイト高速化/最適化のためにやったこと
概要
最近作っていたWebサイト( https://atelier24b.com/ )で、Chorme の Audits 使ってパフォーマンス計測しながらやってみたのでその結果
サイトの作り的には
- WordPress
- カスタム投稿で一覧/詳細ページ
- 固定ページあり
- webpack使って html/css/js コンパイル
みたいなわりとミニマムな5テンプレートくらい(ページ数20くらい)のレスポンシブのWebサイトです。
設定
Audits の設定はデフォルトです
結果
ページ名 | Performance | Accessibility | Best Practices | SEO | URL |
---|---|---|---|---|---|
トップ | 89 | 100 | 100 | 100 | URL |
一覧 | 96 | 93 | 100 | 96 | URL |
詳細 | 93 | 93 | 100 | 90 | URL |
ページ | 97 | 93 | 100 | 90 | URL |
トップ
一覧
詳細
ページ
やったこと
WordPressプラグイン
最適化まわりでいれたプラグイン
Autoptimize
ファイル(html/css/js)のminifyをいい感じにしてくれるプラグイン
テンプレート側の記述は一切気を使わなくてよく、生成されるhtmlに対してoptimizeをかけるので手軽に導入可能です。
設定も豊富でcssインライン化などベストプラクティに沿ったオプションも用意されています。
ただデバッグはしづらいので管理画面ログイン中のユーザーは最適化しないほうがいいかもです。
Compress JPEG & PNG images
画像圧縮のプラグイン。
実際にはこれで圧縮してもPerformanceの項目では圧縮してねと怒られるのですが..
All In One SEO Pack
SEO最適化ですが、だいたいこれ入れて適切に設定できてればSEOは上がる気がします。
カスタム投稿のアーカイブなどうまく出力してくれないテンプレートやページもあるので、1ページずつ出力内容確認しながらフック使って調整していく必要がある場合も
gzipの有効化
Performance の項目で gzip にするといいよってことだったので .htaccess に下記を追加でファイルをgzipで配信
※ さくらサーバー + WordPressの場合
参考: さくらインターネットのレンタルサーバーで通信の圧縮(mod_deflate)を利用する方法 | スキコミ
詳しくみる
# gzip有効 <IfModule mod_deflate.c> SetOutputFilter DEFLATE BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch \bMSIE\s(7|8) !no-gzip !gzip-only-text/html Header append Vary Accept-Encoding env=!dont-vary # 画像は再圧縮しない SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary # 圧縮設定 AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/js AddOutputFilterByType DEFLATE image/svg+xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/atom_xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/x-httpd-php </IfModule>
その他
- BEMにして各クラスセレクタにCSS当てる
- アウトライナーを使って構造確認 ( HTML5 Outliner )
もやりましたが普段からやってはいるのでやっぱりコンテンツ(構成)がミニマムっていうのが大きい気がします。
jQueryとIsotopeやPhotoSwipeみたいなJSライブラリも使っていますし、なんか考えると特別なことはしていないという印象です。
SEOがスコア90くらいなのは、meta関係の設定などではなく色のコントラストをもっとつけましょうみたいな見た目的な話なのでそこは少し許容(妥協やトレードオフ)しています。
感想
Page Speed Insightsは割と結果判定がゆるい?気がしますが、GTmetrix だとPageSpeed ScoreはF判定だったりします。
Auditsの点数だけがすべてではないですね。
あとはいろいろな設定とか環境とか加味したり、もっとキャッシュ設定や実際の表示速度/ネットワーク周りも突き詰めてやらないといけないのかなと感じました。