今回はテクニカルな話題、備忘録がわりで。
WebサイトでFormを使っているとき、次のページに進んでから戻るボタンを押すことがあります。このとき、ユーザーはさっき入力した内容が画面に残っていることを期待するでしょう。しかし、実際にはFormの中身がもとに戻っている(消えている)ことが多々あります。
これ、Googleで検索しても「サーバー側ではどうしようもない」と言っているBLOGや掲示板が多いですが、そんなことはありません。
手元のFireFox(最新)で試したところ、Formにさっきの内容が残るかどうかは、HTTPヘッダーでキャッシュを許しているかどうかに依存するようです。Ajaxで内容を書き換えた状態が破棄されるかどうかも同様。サーバーによって、HTTPヘッダーを吐き出すときにキャッシュOKにするかNGにするかが、サーバー既定値として設定されています。それを「確実にキャッシュOK」にしてしまえば、問題が解決します。(すべてのブラウザがこの動作をするかどうかは要確認)
具体的には、PHPを有効にしておいて、HTMLの先頭にHTTPヘッダーを埋め込みます。
<?php header(“Content-Type: text/html; charset=utf-8″);
header(“Cache-Control: Private”); ?>
こんな感じですね。先頭じゃないと意味がありません、先頭じゃないとエラーが出ます。
charsetは実際に使っているcharsetをセットしましょう。
これでキャッシュしていいことになり、戻るボタンで強制的にリセットされるのを回避できます。
拡張子.htmlではPHPが動作しないサーバーもあります。その場合、拡張子を.phpにするか、.htmlでもPHPが動作するようにサーバーを設定しましょう。
この記事よかった!の時、2つ投票押してください→