IT二刀流にはプロモーションが含まれています。

htmlのキャッシュを無効にする方法

Linuxコマンド

webページ変更を反映しても、クライアントから「ページ変わってないんですけど?」とか連絡来るのはweb屋のあるある。

毎回「キャッシュなので再読み込みして下さい」って答えるの面倒。いっそキャッシュ無効にしてやるとか思います。(本当は良くない)

公開webページのキャッシュを無効にするのはユーザーアクセシビリティ的に問題ですが、動的なページとか製造中のページなどでどうしても無効にしたい場合があるので調べてみた。

HTML4までの書き方

HTMLの<head>~</head>内に以下を記述

<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="0">

しかし!これが使えるのはhtml4(HTTP1.0,HTTP1.1)まで。

ちなみに、no-cacheはキャッシュを使うなって意味でキャッシュはされるよう(使わないだけ)。キャッシュを無効はno-storeらしい。

どうでもいいわそんなこと!今からはhtml5の時代、HTTP2.0の時代じゃ!!

HTML5の書き方

HTML5ではApplication Cache(appcache)でhtml要素のmanifestで指定する。

<!DOCTYPE html>
<html lang="ja" manifest="my.appcache">

my.appcacheの書き方

CACHE MANIFEST
#version:1.0.0
CACHE:
index.js
index.css

NETWORK:
*

これでindex.jsとindex.cssはキャッシュされない。

しかし!このappcacheは非推奨になったようだ・・・

結局どうすればよいのか?

非推奨なら当分はappcacheが使えるはず、今後はどうしたらいいのか・・

解決方法がわかれば追記します(T_T)

phpなどcgiでEtagを出力

phpなどのcgiが利用できるのならEtagで対応できるようだ。サーバとEtagが同じであれば304 not modifiedを返し、異なれば200を返す。304だとキャッシュを利用する。(HTTPのリクエストヘッダの話)

Etag表示
<?php header('Etag:' . time()); ?>

phpで上記のheaderを返せば1秒毎にEtagが変わる仕組み。今度実験してみよう。。

ITエンジニアの転職

いまITエンジニアの需要は急拡大しています。
ITエンジニアの経験があれば好条件で転職することも難しくありません。

マイナビクリエイター

☆ 支援ご協力のお願い ☆

この記事が「役に立った」と感じたら

投げ銭の「OFUSEで応援」で支援して頂けたら励みになります!

OFUSEのやり方(説明)

関連記事
記事特集