画像掲示板の泉はSQL化やPHP出力化を未だやってはいないので、昔ながらのdatログ+html書き出し方式で運営してしまっておりましたが、html書き出し型で問題となるのがブラウザのキャッシュコントロールです。

掲示板のとあるスレッドで書き込みがあった場合、書き込みされたスレッドをジャンルの最上位に移動するようしているのですが、ログデータを配列にして、書き込みされたスレッドデータをarray_unshift()で先頭に置いたりといったデータ操作自体は問題なくできるものの、最終的にこれをhtmlファイルに上書きして保存したとしても、ブラウザ側でキャッシュを読まれてしまうと、せっかくのスレッド並び替え機能も意味がなくなってしまいます。

特に、掲示板のデザインをギャラリー風のタイル並びのようなレスポンシブサイトにしていたので、書き込みしたスレッドがすぐに最上位に上がってくれていないと、書き込みした感がでないのでもったいない感じです。

書き込みしたら先頭にスレを持ってくるようにしていますが、
キャッシュを読まれると当然移動前のhtmlのままになります

<head>内の<meta>タグにお決まりの下記はいれていますが、Chromeでうまく動くときもあればSafariではNGだったり、その逆だったりとやはりブラウザやアプリ任せのキャッシュコントロールは弱い感じです。

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

他にも、<meta http-equiv=”Expires”>でキャッシュ有効期限を入れてみたりはしてみたものの、状況変わらずでした。

流石にこれは無理っぽいと思った時、それならJavaScriptで強引にブラウザをリロードさせてしまえばいいんじゃない!?とつい思いついてしまい、あれこれやってみたという、今回はそんな話になります。

最初にやった方法が、とりあえずsetTimeout()でリロードを走らせてしまえばいいのでは!?というかなり強引な方法です。特に何も考えずにDOM読み込み後の雑多な処理の一つにsetTimeoutのタイマーでリロード処理を放り込んでみました。

$(function() {
 setTimeout(function() {
  location.reload();
 },30000);
});

setTimeout()メソッドで指定する数値はミリ秒 (1/1000 秒) 単位となるので、とりあえず30,000ミリ秒(30秒)で設定をいれ、試しに掲示板スレに書き込みをしてみました。

書き込み後にジャンルトップページに戻ってみたものの、やはり相変わらず最上位には書き込みしていないスレが上がったままの、キャッシュhtmlが表示されておりましたが、しばらくすると、タイマーでブラウザがリロード!見事書き込みスレッドが最上位に表示された最新ファイルを読み込ませることができました。safariでやってもいい感じです。

とりあえずこれでOKということで、全ジャンルの掲示板プログラムやテンプレートの更新をかけて無事作業終了となった時、ふと・・・・肝心なことに気が付いてしまいました。

勘が良いというか、普通の人ならコードを見た瞬間に気付いたと思いますが、30秒毎にリロードされたら書き込みなんてできないのでは???という点です・・・

実際、新規スレッド建ての投稿をしようと書き込みをしていたら、30秒でリロードが走って書き込み中のコメントが真っ白に。。。キャッシュコントロールのことばかり考え、そもそも掲示板で書き込みをするってことをすっかり忘れてしまっておりました。

ということで、また1からやり直しです。

要は、1回だけリロードさせればいいということなので、調べてみたら似たようなことを質問している方がいらっしゃいました。「とあるページにアクセスした際、JavaScript(jQuery)を使って一度だけページをリロードしたいと思っております。」とのことで、まさに同じ悩みをお持ちだったようです。

ベストアンサーによりますと、 window.nameプロパティに名前を適当に付けて、指定した名前がなければリロード走らせるというシンプルなものでOKとののこと。

if(window.name != "reloaded") {
 location.reload();
 window.name = "reloaded"; //適当な名前
}else{
 window.name = "";
}

とうことで、こんな感じでやってみたところ、1回だけリロードを走らせることができ、掲示板のスレッドも思った感じで並び変わってくれました。

肝心のアクセス数や投稿数がサッパリない掲示板ですが、画像アップローダー代わりにでもご利用下さい。

画像掲示板の泉はこちら

スポンサーリンク