趣味とか、パソコン関係とか・・・気づいたこと、思ったことを書くブログ。

自己紹介

眼鏡娘、渡辺です。明日はどっちに転ぶかわかりゃぬ。バイクに乗って都内を移動し、時々バンドガール、ときに眠りこける小娘でし。

2008/11/28

キャッシュとか、戻るボタンとか、onclick="history.back()"とか。

えーっと。

PHP入力画面で躓きました。

普通、入力した内容が間違っていた時 OR やっぱ入力しなおそって時、

入力フォーム → エラー → 戻るボタン → 入力フォームに戻り、直前の入力値を保持
入力フォーム → 確認フォーム → 戻るボタン → 入力フォームに戻り、直前の入力値を保持

みたいな流れですよね?

んで、今、この「戻る」ボタンのソースは、

<input value="戻る" class="w100" onclick="history.back();" type="button">

なんです。

ちなみにこれってブラウザの戻るボタンと同じ動きらしいぜ。

----------------------------------------------------------------------------------
あ、ちなみに補足ですが、上記のような書き方はあまり好ましくないっぽい。
たぶんだけど、下の記事がよろしいかと。

onclick属性でhistory.back()などを使う場合に、
http://n-standard.com/diary/2006/12/172139.html


ってかhistory.backってあまり使用してはよろしくないイメージが勝手にある。
----------------------------------------------------------------------------------

あ、で、話もどしまふ。

これを使用していて、IEでは戻った場合に直前の値が保持されているのだが・・・
Firefoxだと保持されない。ってか再度読み込みを行っているっぽい。

だって、ブラウザでスクロールして、その画面から次の画面へ遷移し、戻った時って、
そのスクロールの位置へ戻るよね?

戻らなかった・・・orz

んで、???ってなって、原因を調べた。

んで、どうやらキャッシュうんぬんのページがいろいろHIT。

ブラウザにキャッシュを使わせないためのHTTP(レスポンス)ヘッダたち。
http://saikyoline.jp/wiki/index.php?cmd=read&page=%BB%E4%C5%AA%A5%C6%A5%F3%A5%D7%A5%EC%A1%BC%A5%C8%2F%A1%D6%CC%E1%A4%EB%A1%D7%A5%DC%A5%BF%A5%F3%C2%D0%BA%F6

実は昨日いろいろ調べてた。キャッシュについて。
んで、上記のサイトがHITしたわけだが。

上記のサイトを参考に、ヘッダー情報に以下を追加していた。

<meta equiv="Pragma" content="no-cache">
<meta equiv="Cache-Control" content="private, no-cache, no-store, max-age=0">
<meta equiv="Expires" content="Thu, 01 Jan 1970 00:00:00 GMT">

あれー?でもこれっておkなんじゃ・・・。

って思った矢先に下記の様な関数があることが判明。
http://jp2.php.net/manual/ja/function.session-cache-limiter.php

session-cache-limiter!!!

たとえば、phpでブラウザにキャッシュさせたくないときに、

session_cache_limiter("nocache");

とかって使うらしいが、これって、

<meta equiv="Pragma" content="no-cache">
<meta equiv="Cache-Control" content="private, no-cache, no-store, max-age=0">
<meta equiv="Expires" content="Thu, 01 Jan 1970 00:00:00 GMT">

これと同様なんだって。

で、ソース読んでたら、

session_cache_limiter('private, must-revalidate');

を発見。

と、いうことはですよ。

PHP側で「キャッシュすんなボケ!」って処理をしたあと、さらにテンプレート側で
「キャッシュすんなボケ!」って処理をしてるわけで、2重に処理をしちゃってることが原因らしい。

なんで、テンプレート側のヘッダーの「キャッシュすんなボケ!」って処理をけしたのだ。

そしたらうまくいった。

ってことはFirefoxの動きの方が正しいのだよね・・・。
IEなんで動いたんだ。なぞい。





ってかbloggerメタ文字とかエスケープしてよ。

0 件のコメント: