Nginx reverse proxy + Apache(mod_php)環境でmod_pagespeedを動かしてみた

出立ての頃に少し触ってすっかり忘れてたのに突然存在を思い出したので、js/css/html minifyあたりがカジュアルに使えるようになってると良いなと思いつつ。

本当はちゃんとアセットパイプラインとかやるべきなんだろうけど、そこまで手を入れられない動いているアプリケーションに次善の策として検討できると便利なんじゃないかと。

とはいえ何度も何度もminifyするのは無駄遣い感が凄いので、Apacheにmod_pagespeedを入れてminifyした結果をnginxにキャッシュさせようという戦術で、とりあえずwordpressが動いている環境にmod_pagespeedデフォルト。これはそれっぽく動いているようには見えたんだけど、JSやCSSのURLが変わってしまう(style.cssがstyle.css.pagespeed.abcd.cssのような感じに)のが嫌な感じなので元々のURLを維持しつつ、画像の最適化系まで入れるとカジュアルじゃなくなってくるので、また今度にしたい。ということで入れてみた設定が以下。
# nginx 1.1.10, apache 2.2, mod_pagespeed 1.11.33

ModPagespeed on
# 0にしておかないとランダムに最適化をスキップする
ModPagespeedRewriteRandomDropPercentage 0
# 何もしない設定にしておく
ModPagespeedRewriteLevel PassThrough
# html minify
ModPagespeedEnableFilters collapse_whitespace,remove_comments,remove_quotes,elide_attributes,trim_urls
# javascript minify
ModPagespeedEnableFilters rewrite_javascript
# css minify
ModPagespeedEnableFilters rewrite_css
# html minify系のフィルタを使うと max-age: 0 が入ってしまうのを防ぐModPagespeedModifyCachingHeaders off
# URLを維持
ModPagespeedInPlaceResourceOptimization on
ModPagespeedJsPreserveURLs on
ModPagespeedCssPreserveURLs on 

狙った動きに近づいてはきたんだけど、JS/CSS minifyがかかるタイミングが把握できなくてもう一息という感じ。htmlのパースを起点に関連するリソースの処理をキューイングして、非同期に処理している様子なんだよなぁ… 前段にキャッシュを入れる場合、キャッシュ側に設定する想定なのかな…

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です