WPXレンタルサーバのキャッシュ動作の怪 (2)

WordPress

前回、WPXのキャッシュ と mod_PageSpeed の両方の機能を有効にした場合、暫くすると、mod_PageSpeed で行われている CSS や JavaScript の圧縮が解除?された状態になっている現象が発生することを書きました。

今回は、その回避策(案)を考えてみました。

その前に、前回の記事の件について エックスサーバー社 に問合せましたので、その回答をお知らせします。

エックスサーバー社からの回答

弊社で検証を行いました結果、お知らせの事象に近い現象を確認することができました。
ただし、完全に同一の現象とは判断できませんでした。
また、本事象につきましては、wpXサービスにて提供しているキャッシュの仕様でございますが、現状回避する術がございません。

「事象に近い現象を確認した」とのことなので、私の環境だけではなく WPXレンタルサーバー 全般で発生するようです。
また、「キャッシュの仕様」とのことなので、WPXのキャッシュを使用する以上は回避できないという、残念な回答でした。

回避策(案)

とはいえ、なんか諦めきれないので、その回避策(案)を考えてみました。

回避策といっても、今回紹介するのは完全な策ではありません。
あくまでも、PageSpeed Insights 対策なのをお断りしておきます。

WPXキャッシュ

WPXキャッシュはこの際、無効にしてしまいます。

.htaccess

WPXレンタルサーバーの設定画面から、.htaccessの編集 画面で、以下を追記します。
前半は、ブラウザキャッシュの設定です。
後半が、mod_PageSpeed の設定で、
・CSS と JS ファイルを外部ファイルではなく、HTML 内に収めてしまう
・mod_PageSpeed のキャッシュ時間を1週間に延長する
という作戦です。

ExpiresActive On
ExpiresByType image/jpg "access plus 7 days"
ExpiresByType image/jpeg "access plus 7 days"
ExpiresByType image/gif "access plus 7 days"
ExpiresByType image/png "access plus 7 days"
ExpiresByType text/css "access plus 7 days"
ExpiresByType text/x-javascript "access plus 7 days"
ExpiresByType application/javascript "access plus 7 days"
ExpiresByType application/x-javascript "access plus 7 days"
ExpiresByType image/x-icon "access plus 7 days"

ModPagespeed On
ModPagespeedInPlaceResourceOptimization On
ModPagespeedEnableFilters canonicalize_javascript_libraries
ModPagespeedEnableFilters defer_javascript
ModPagespeedEnableFilters insert_dns_prefetch
ModPagespeedEnableFilters insert_image_dimensions
ModPagespeedEnableFilters local_storage_cache
ModPagespeedEnableFilters move_css_above_scripts
ModPagespeedEnableFilters move_css_to_head
ModPagespeedEnableFilters remove_comments
ModPagespeedEnableFilters remove_quotes
ModPagespeedEnableFilters resize_mobile_images
ModPagespeedEnableFilters rewrite_style_attributes
ModPagespeedEnableFilters trim_urls
ModPagespeedDisableFilters inline_images
ModPagespeedCssInlineMaxBytes 512000
ModPagespeedJsInlineMaxBytes 512000
ModPagespeedImplicitCacheTtlMs 604800000
ModPagespeedRewriteRandomDropPercentage 0

 

前回の記事での問題点は、CSS と JS ファイルが圧縮されずにキャッシュされる点が問題でした。

ModPagespeedCssInlineMaxBytes 512000
ModPagespeedJsInlineMaxBytes 512000

この設定により、HTML に含めることができた CSS と JS ファイルを削減することができます。
これにより、削減できたファイルに対する PageSpeed Insights の「圧縮を有効にする」の指摘が無くなります。
また、副次的な効果として、同ファイルに対する「スクロールせずに見えるコンテンツのレンダリングをブロックしている JavaScript/CSS を排除する」の指摘もなくなります。

 

なお、デフォルトでは、mod_PageSpeed のキャッシュ時間は5分です。

ModPagespeedImplicitCacheTtlMs 604800000

この設定により、mod_PageSpeed のキャッシュ時間を1週間に延長します。
(実際にはもっと早いタイミングでキャッシュがクリアされてしまうようですが。)

効果のほどは

効果のほどは、、、
PageSpeed Insights の評価としては、2回目以降のアクセスからは85点以上(緑字)に向上しました。

コメント