前回、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点以上(緑字)に向上しました。
コメント