adsenseのスコアカードで、cssの最適化がされていないと指摘された。
改善策として、cssの一部をインライン、つまりhtmlファイルの中に直接書いて、
css全体はあとから読むようにする、ということが書いてあった。
そのときは、以下のようにhtmlファイルのheadの部分に、cssファイルをリンクさせていた。
<head>
<link rel="stylesheet" type="text/css" href="http://example.com/css/mycss.css">
</head>
別ファイルを読みに行くのだから時間がかかるだろうとは思うが、
その内容をhtmlの中に直接書くのはイヤだ。
adsenseが言うには、全部ではなくて、初期表示に必要な一部だけ、ということなのだが、
どれが必要でどれが必要でないか判断がつかない。
とりあえず、cssをキャッシュするように、apacheを設定してみた。
apacheで、mod_expireというモジュールを有効にする。
/etc/httpd/conf/httpd.conf
で、下記の行がコメントアウトされていなければよい。
LoadModule expires_module modules/mod_expires.so
そして、下記のように、各ファイルについて有効期限を設定する。
ここに設定した期限が経過するまでは、クライアントはサーバに直接アクセスせず、
キャッシュを参照するそうだ。
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/png "access plus 1 months"
ExpiresByType image/jpeg "access plus 1 months"
ExpiresByType image/gif "access plus 1 months"
ExpiresByType text/css "access plus 12 months"
ExpiresByType text/javascript "access plus 1 weeks"
ExpiresByType application/x-javascript "access plus 1 weeks"
ExpiresByType application/x-shockwave-flash "access 1 years"
ExpiresDefault "access plus 1 days"
</IfModule>
私のサイトは画像を一切使っていない。
今回指摘されたのも、cssについてだけだ。
とりあえず、12 monthsで設定してみた。ここがあまり短いと、警告は消えない。
そして、htmlファイルのheadに記載しているcssファイルへのリンクを、
bodyの後ろ、もっというと、</html>の前に持ってくる。
これをやると、cssを読む前にコンテンツを読み込み、cssを読んだら内容が反映される。
部分的なインライン記述をしなくても、adsenseの警告はこれで消えた。
上記のExpireなんたらの記述は.htaccessに書く方法もあるらしいのだが、
基本的に.htaccessは使わないほうがよさそうなので、httpd.confに書いた。