このブログの読み込みが異常に遅いので気になっていた。YSlowで調べたら、ものすごい点数が低く、Fランク。WordPressが遅いという以前にサイト構造が非常に重いということのようだ。これはキャッシュでどうこうなる問題ではない。
とりあえず、YSlowに指摘されたもののうち、簡単に対処できるところから。mod_deflateを有効にしたりFileETagを切ったり、という単純作業。.htaccessは次のような感じの文字列が追加された。少しは点数が上がる。FileETagは負荷分散してないシングルサーバ構成だから悪影響はないはずなんだけど、一応切る。
<IfModule expires_module>
ExpiresActive On
ExpiresDefault "access plus 2 dayw"
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 application/javascript "access plus 7 days"
ExpiresByType application/x-javascript "access plus 7 days"
</IfModule>
<IfModule deflate_module>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/x-javascript
</IfModule>
FileETag None
しかし難題が。YSlowは「CSSは前、スクリプトは後ろ」であるべし、と言うのだけど、WordPressはCSSもJavaScriptもの中で定義するようになっているのよね。読み込むJavaScriptファイルはwp_headのactionで書き出す。YSlowによれば、CSSが前にあれば描画までの時間が短くなるが、JavaScriptは描画には必要なく、描画後に必要になることが多いにも関わらず、たまに描画に必要になるためにパースを待ってから描画しているブラウザが多いらしい。