web-dev-qa-db-ja.com

PHPおよびApacheを使用してHTTP expiresヘッダーをセットアップする

PHP + Apacheでexpiresヘッダーを設定するにはどうすればよいですか?gzip圧縮されたリソースを提供するためにauto_prependを現在使用していますが、HTTPキャッシュを最大化したいです。

これらを設定するにはどうすればよいですか?

55
Tom

これを行うには2つの方法があります。 1つは、PHPコードでヘッダーを指定することです。これは、有効期限をプログラムで調整する場合に便利です。たとえば、Wikiでは、頻繁に編集されないページの有効期限を長く設定できます。

header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + (60 * 60))); // 1 hour

2番目の選択肢は、。htaccessファイルを作成するか、httpd構成を変更することです。共有ホスティング環境では、.htaccessファイルの変更は非常に一般的です。これを行うには、サーバーがmod_expiresmod_headers、またはその両方をサポートしているかどうかを知る必要があります。最も簡単な方法は、単純に試行錯誤することですが、一部のApacheサーバーは、/ server-infoページでこの情報を表示できるように構成されています。サーバーにmod_expiresとmod_headersの両方があり、静的リソースに有効期限を設定する場合は、これを.htaccessファイルに入れてみてください。

# Turn on Expires and set default to 0
ExpiresActive On
ExpiresDefault A0

# Set up caching on media files for 1 year (forever?)
<FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$">
ExpiresDefault A29030400
Header append Cache-Control "public"
</FilesMatch>

他の組み合わせおよびその他の例については、以下を参照してください。 http://www.askapache.com/htaccess/speed-up-your-site-with-caching-and-cache-control.html

114
brianegge

このApacheモジュールは役に立つかもしれません: http://httpd.Apache.org/docs/2.0/mod/mod_expires.html

2
middus

何か試してみましたか?

<?php
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
?>
0
acemtp