0

YSlow が推奨するように、画像の Expires ヘッダーを有効にしようとしています。以前はこれが機能していたと確信していますが、YSlow を確認すると、キャッシュされていないと表示されます。

私の .htaccess については、次のことを試しました。

ExpiresActive on
ExpiresDefault A0
<FilesMatch "\.(gif|ico|jpg|png)$">
    ExpiresDefault A29030400
    Header append Cache-Control "public"
</FilesMatch>

ExpiresActive on
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 month"

http://www.seoconsultants.com/tools/headers.aspは、私の画像の 1 つに対して次のように出力します。

HTTP Status Code: HTTP/1.1 200 OK
Date: Mon, 05 Oct 2009 20:12:04 GMT
Server: Apache/2.0.63 (Unix) mod_ssl/2.0.63 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4 PHP/5.2.8
X-Powered-By: PHP/5.2.8
Set-Cookie: PHPSESSID=5d11f4d8aa37ceee6605786e59ff4f0f; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: lastlogin=1254773024; expires=Mon, 02-Nov-2009 20:12:04 GMT
Connection: close
Content-Type: image/jpeg

Set-Cookie 部分は正しいように見えますが、Expires ヘッダーは正しくありません。Expires を正しく設定するにはどうすればよいですか? また、それらが異なるのはなぜですか? mod_expires と mod_headers が有効になっていることを再確認しました。

4

1 に答える 1

1

Set-Cookieヘッダーから、これはphpセッションの一部であるように見えます。phpは、session_start()の後にキャッシュを自動的に無効にします。

php.iniのsession.cache_limiterを変更することで、この動作を変更できます。さまざまな設定については、PHPのマニュアルページを参照してください。

または、「追加」の代わりに「設定」を使用して、.htaccessのヘッダーを上書きしてみることもできます。

于 2009-10-20T21:56:48.667 に答える