2009-10-05 82 views
0

我正在嘗試爲YSlow推薦的圖像啓用Expires標題。我確信我有這個工作之前,但現在當我檢查YSlow它說他們沒有被緩存。Set-Cookie和Expires標題不同

對於我的.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輸出爲我的圖片下列操作之一:

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 

設置Cookie部分看起來是正確的,但Expires標題不是。我如何正確設置過期以及它們爲什麼不同?我有雙重檢查,mod_expires和mod_headers已啓用。

回答

1

從Set-Cookie頭看來,它看起來像是php會話的一部分。 php會在session_start()後自動禁用緩存。

您可以通過更改php.ini中的session.cache_limiter來修改此行爲。有關各種設置,請參閱the PHP manual page

或者,您可以嘗試使用「set」而不是「append」來覆蓋.htaccess中的標頭。

+0

該網站正在使用內部框架,該框架存儲public_html目錄外的所有內容,並提供來自PHP腳本的圖像。我將圖像移至public_html/img,並且.htaccess設置正常工作。 – 2009-10-21 17:24:16