2012-03-19 20 views
1

明らかに何か不明な点がありますが、Codeigniterアプリケーションは要求時にヘッダーを送信していません。 だから、任意のコントローラまたは拡張MY_Controllerに:Codeigniterでキャッシュ制御ヘッダーが送信されない

$this->output->set_header("Last-Modified: " . gmdate("D, j M Y H:i:s") . " GMT"); 
$this->output->set_header("Expires: " . gmdate("D, j M Y H:i:s", time()) . " GMT"); 
$this->output->set_header("Cache-Control: no-store, no-cache, must-revalidate"); 
$this->output->set_header("Cache-Control: post-check=0, pre-check=0"); 
$this->output->set_header("Pragma: no-cache"); 
$this->output->set_header("Steve: it aint working you know"); 

そして私が手のヘッダーは次のとおりです。

HTTP/1.1 200 OK 
Date: Mon, 19 Mar 2012 18:03:06 GMT 
Server: Apache/2.2.20 (Ubuntu) 
X-Powered-By: PHP/5.3.6-13ubuntu3.6 
Last-Modified: Mon, 19 Mar 2012 18:03:06 GMT 
Expires: Sat, 01 Jan 2000 00:00:01 GMT 
Cache-Control: post-check=0, pre-check=0, max-age=0 
Pragma: no-cache 
Steve: it aint working you know 
Vary: Accept-Encoding 
Content-Encoding: gzip 
Content-Length: 10780 
Keep-Alive: timeout=5, max=100 
Connection: Keep-Alive 
Content-Type: text/html 

だから私はそれがスティーブからヘッダを送信しています知っている:ヘッダをしかし、それは私のCache-Controlを送信していません設定。キャッシュ制御設定をコメントアウトすると、同じ値が表示されます。

これはどこからオーバーライドできますか? Codeigniter、PHP、またはApacheですか?

答えて

1

特に、mod_expiresHeader Directiveがどのように設定されているかを確認します。

「ヘッダーは、コンテンツハンドラと出力フィルタが実行された直後に変更され、送信ヘッダーを変更できるようになりました」ということに注意してください。したがって、PHPで設定したヘッダーを変更するようにApacheが設定されている可能性があります。

私はApacheの専門家ではありませんが、これは私が似たような問題を解決するために取り組んだものです。

+0

OK歓声を走った、私はもう少し徹底的にそれをチェックアウトします。 – Stevo

1

手順: 私の.htaccessファイルに以下を追加しました。

<IfModule mod_headers.c> 
Header add Cache-Control: "no-store, no-cache, must-revalidate" 
</IfModule> 

sudo a2enmod headers 
    sudo service apache2 restart 
関連する問題