先日、クライアントワークの中でキャッシュを残さないようにする要望があり、いろいろ調べてみると手軽に出来たので備忘録として残しておきたいと思います。今回はPHPでキャッシュを残さないようにする方法となります。
まず、HTML5以前のものですと、下記のHTMLのメタタグ指定のみで実現できたようですが、HTML5からは廃止になったとのことで、現在はほぼ使う機会は無いかと思います。
【HTML】※一部抜粋
<head> <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> ....... </head>
そこで、PHPのheader関数でヘッダー情報を変更することで対応する形になります。具体的には下記のようにheader関数で指定します。この時にファイルの先頭に来るようにしておきます。
【PHP】
<?php header('Expires: Tue, 1 Jan 2019 00:00:00 GMT'); header('Last-Modified:' . gmdate( 'D, d M Y H:i:s' ) . 'GMT'); header('Cache-Control:no-cache,no-store,must-revalidate,max-age=0'); header('Cache-Control:pre-check=0,post-check=0',false); header('Pragma:no-cache'); ?>
反映したページのリクエストヘッダーを見てみると、キャッシュの扱いが指定したものに反映されているのが確認できます。
キャッシュを残らないようにする方法は他にもあるようですが、手軽にできるのでこの方法は覚えておくと便利ですね。
(参考にさせて頂いたサイト)
(CakePHP2.x) ブラウザにキャッシュさせない方法