AjaxとJavaScriptタイマー
Ajaxを使うと、表示画面とは非同期で処理できます。
今まではサーバー側の処理を待ってから、その結果を画面表示したりしていました。重い処理をする場合は待ちくたびれます。
またあるとき、重い処理というかバッチ処理(タスク処理)をサーバー側の設定で定期的に処理することがあります。ColdFusionでもスケジューリングすることができますが、レンタルサーバーを使っている場合、やたらと設定できません。
なにか方法は。。。
そこで、AjaxとJavaScriptタイマーの組み合わせを考えました。
JavaScriptでは、ある一定の間隔で処理を行います。
次にAjaxの仕組みを使って、非同期でサーバーの処理を行います。
そうすると、ブラウザで画面表示している間は、タスク処理をしているようなものです。
レンタルサーバーを使っている人で、最低1日1アクセスあるのなら、1日1回はタスク処理を行うことができます。アクセスしてくる人には、重い処理をやっていることは感じることはありません。
問題は「Ajaxはなんだか難しい」ということです。
以前こちらのサイトを見たとき、まさに
「あー、こんなのでいいんだ!」
と思いました。
で、上記方法を使って作ったサイトがこちらです。
サーバー側では以下の処理をやっています。
- 前回メール配信の日時から12時間以上たっていれば以下の処理を行う
- 次のカテゴリ(本など)のジャンルごとのデータを、アマゾンWebサービスから取得する
- 取得したデータを編集し、こちらへメール入稿する
- 入稿してから1時間以内にメール配信される
AjaxとJavaScriptタイマーの組み合わせは、なかなかおもしろいです。