PHPで管理画面を制作しているのですが、項目を追加するページと、表示するページを用意しているのですが、追加した後に表示するページに行っても、一度、更新ボタンを押さないと追加された分が反映されて表示されません。


恐らく、キャッシュの問題かと思いますが、キャッシュを削除する方法はありませんでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/03/23 14:46:44
  • 終了:2006/03/24 13:55:26

回答(3件)

id:Sampo No.1

Sampo回答回数556ベストアンサー獲得回数1042006/03/23 14:55:13

ポイント27pt

http://php.s3.to/man/function.header.html

ここに、キャッシュを行わせないためのHTTPヘッダ出力法が載っています。

ただ、追加受付後にheader("location: 表示ページ");をするだけで、通常は表示ページが再読込されるはずですが。

id:makocan

ありがとうございます。

見てみたいと思います!

2006/03/24 13:53:58
id:pxb12663 No.2

pxb12663回答回数395ベストアンサー獲得回数142006/03/23 16:54:11

ポイント27pt

header関数の Cache-Control: no-cache と Pragma: no-cache でキャッシュを無効に出来るそうですが、私も開発していて悩まされたことがあります。環境によっては表示出来たり出来なかったりするので、結局は注意書きをしました。

http://www.tohoho-web.com/lng/199812/98120045.htm

id:makocan

ありがとうございます!

こちらの方法で、問題なく正常に動作いたしました。

2006/03/24 13:54:25
id:canadie No.3

canadie回答回数6ベストアンサー獲得回数12006/03/23 18:31:04

ポイント27pt

キャッシュを使わないようにブラウザやProxyに通知することはできます。私は次のようにしています。


header('Pragma: no-cache');

header('Expires: Thu, 01 Dec 1994 16:00:00 GMT');

header('Cache-Control: no-cache; max-age=0');


大抵はこれでうまく行くと思います。

それでもダメな場合は、ちょっと強引ですがGETパラメタを付けてURLを毎回変えるようにすればキャッシュが表示されることはありません。

<a href="xxxx.php?uid=<?php print md5(uniqid(rand(), true)); ?>">表示するページ</a>

こんな感じです。例では、uid=の後に、毎回違う文字列が埋め込まれるようになります。uniqidやmd5の使い方については、PHPのマニュアルをご覧下さい。

uniqid

http://jp2.php.net/manual/ja/function.uniqid.php

md5

http://jp2.php.net/manual/ja/function.md5.php

id:makocan

ありがとうございます。

上記同様に、この手法も使わせていただきました。

>表示するペー>ジ

これは上手い方法ですね。

2006/03/24 13:55:09

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません