キャッシュの無効化

このページでは、

  • プロキシ サーバ (proxy server)
    • キャッシュ サーバ (cache server)
  • ブラウザ (browser)

のキャッシュについて解説します。

キャッシュの処理を指示しても、サーバやブラウザがそれに従う保証はありません。

キャッシュさせない

HTTPヘッダで、次のように出力します。

header( 'Expires: Thu, 01 Jan 1970 00:00:00 GMT' );
header( 'Last-Modified: '.gmdate( 'D, d M Y H:i:s' ).' GMT' );

// HTTP/1.1
header( 'Cache-Control: no-store, no-cache, must-revalidate' );
header( 'Cache-Control: post-check=0, pre-check=0', FALSE );

// HTTP/1.0
header( 'Pragma: no-cache' );
PHP: header - Manual

実行例

現在の日時を取得することで、キャッシュの影響を確認できます。キャッシュが有効ならば、再読み込みしてもキャッシュされている過去の日時が返されるため、日時は更新されません。一方でキャッシュが無効ならば、つねに最新の日時が取得されます。

キャッシュ有効
 

キャッシュ無効
 

※キャッシュが無効化されているならば、ボタンを押すごとに日時が更新されます。

一定時間後に無効にする (有効期限の設定)

max-ageで、有効期限を秒数で指定します。

header( 'Cache-Control: max-age='.$expire_seconds );
PHPのマニュアルから検索