2014-09-19 97 views
1

我一直在嘗試爲我的網站的靜態文件(如jpg,png,css等)設置緩存,但到目前爲止沒有成功,我發現PHP的配置正在接管.htaccess是配置。PHP配置覆蓋.htaccess緩存標頭

我已驗證mod_expires.so在我的httpd.conf中未註釋。

我在.htaccess中試過,但徒勞無功。

<IfModule mod_expires.c> 
ExpiresActive On 
<FilesMatch "\.(jpe?g|png|gif|js|css|ttf|eto|svg|woff|otf)$"> 
ExpiresDefault "access plus 1 month" 
</FilesMatch> 
</IfModule> 

甚至嘗試沒有成功

<FilesMatch "\.(flv|gif|jpg|jpeg|png|ico)$"> 
Header set Cache-Control "max-age=2592000" 
</FilesMatch> 

然後我發現,我的php.ini有session.cache_limiter = nocache我把它改成session.cache_limiter = public和我在php.ini中改變這一配置並重新啓動Apache的後session.cache_expire=180 ,我發現圖像的響應標頭改變如下

HTTP/1.1 200 OK 
Date: Fri, 19 Sep 2014 07:33:58 GMT 
Server: Apache/2.2.3 (CentOS) 
X-Powered-By: PHP/5.2.10 
Expires: Fri, 19 Sep 2014 10:33:58 GMT 
Cache-Control: public, max-age=10800 
Last-Modified: Mon, 05 Dec 2011 19:08:22 GMT 
Connection: close 
Transfer-Encoding: chunked 
Content-Type: text/html; charset=UTF-8 

我想要做的是將cach e圖像和「訪問加1個月」的css/js文件

任何建議表示讚賞。

回答

0

您可以使用ExpiresByType指令:

ExpiresActive on 
ExpiresByType image/gif "access plus 1 month" 
ExpiresByType image/png "access plus 1 month" 
ExpiresByType image/jpeg "access plus 1 month" 
ExpiresByType image/jpg "access plus 1 month" 
ExpiresByType text/css "access plus 1 month" 
ExpiresByType application/x-javascript "access plus 1 month" 
ExpiresByType text/javascript "access plus 1 month" 
+0

謝謝你的答案,但我已嘗試以及:( – Alyas 2014-09-19 07:58:56

+0

是的,這就是我提到,似乎PHP配置是壓倒htaccess的指令 – Alyas 2014-09-19 08:09:00

+0

。 PHP配置不能覆蓋'text/javascript'或'image/gif'的緩存。嘗試註釋掉你的'FilesMatch'塊並在一個新的瀏覽器中測試。你也可以在這些行之前使用'ExpiresActive on'嗎? – anubhava 2014-09-19 08:10:48