キャッシュさせない方法

キャッシュさせない方法

コンテンツの内容によっては常に最新情報を表示させたいので、キャッシュさせたくない場合の設定方法。

設定しないといけない情報は「Cache-Control(キャッシュするか?しないか?)」と「Expires(キャッシュ有効期限)」。
「Cache-Control」はHTTP1.1においてのキャッシュ制御なので、HTTP1.0向けに「Pragma」の設定も必要。(どちらでアクセスされるか分からないから)
まとめると、「Cache-Control」「Pragma」「Expires」の3つを設定する。

Pragma

設定できるのは「no-cache(キャッシュしない)」のみ

Cache-Control

「no-store(キャッシュしない)」
「no-cache(キャッシュしても良いが確認してから)」
ちょっと違うけど、大抵no-cacheで問題無さそう。

Expires

秒数かGMT(グリニッジ標準時)を設定。「0」を設定するとキャッシュしない事になる。
ただ、Amazonなどを見ると「-1」が設定されている。不正な日時扱いになるらしく、この場合(不正な日時)はキャシュされないらしい。

実際の方法

方法1:metaタグ

head内に以下の3行を書く。

<meta http-equiv=”Pragma” content=”no-cache”>
<meta http-equiv=”Cache-Control” content=”no-cache”>
<meta http-equiv=”Expires” content=”Thu, 01 Dec 1994 16:00:00 GMT”>

Expiresの日時は例。要は過去の日時を記載する。

方法2:.heaccess

htaccessに以下を記載。

<Files ~ “\.(html|php|jpe?g|gif|png)$”>
Header set Pragma no-cache
Header set Cache-Control no-cache
Header set Expires -1
</Files>

1行目で対象ファイルを設定する。ExpiresはAmazon方式。

方法3:CGI

Perl

head内に以下を出力。

print “Content-type: text/html\n”;
print “Pragma: no-cache\n”;
print “Cache-Control: no-cache\n”;
print “Expires: Thu, 01 Dec 1994 16:00:00 GMT\n\n”;

PHP

head内に以下を出力。

header(“Content-Type: text/html; charset=文字コード”);
header(“Expires: Thu, 01 Dec 1994 16:00:00 GMT”);
header(“Last-Modified: “. gmdate(“D, d M Y H:i:s”). ” GMT”);
header(“Cache-Control: no-cache, must-revalidate”);
header(“Cache-Control: post-check=0, pre-check=0”, false);
header(“Pragma: no-cache”);

参考URL

http://qiita.com/hkusu/items/d40aa8a70bacd2015dfa

https://w3g.jp/others/htaccess/cache_control

http://tech.bayashi.net/pdmemo/browsercache.html

https://siguniang.wordpress.com/2014/02/01/http-expires-header-values-minus1/

シェアする

  • このエントリーをはてなブックマークに追加

フォローする