LoginSignup
10
9

More than 5 years have passed since last update.

AjaxPostの高速化

Last updated at Posted at 2012-03-16

この手法を使うと、webアプリでajaxを用いてpostしたときの体感速度がクライアントアプリ並になる。

従来の方法

1.onclick="update(this);"などと設定
2.update(this)で更新クエリを発行
3.callback関数に処理が返ってくるのを待つ
4.更新クエリのcallback関数で更新内容をインターフェイスに反映

→callback関数に処理が返ってくるまでインターフェイスが反映がされず、遅い。

みのるajaxpost高速化

1.onclick="update(this);"などと設定
2.update(this)で更新クエリを発行する前に、インターフェイスを更新
3.callback関数に処理が返ってくるのを待つ
4.更新に失敗していたら、callback関数でインターフェイス上で取り消し処理やエラー処理をする

→callback関数に処理が返ってくるまでの待ち時間がなく、インターフェイスが瞬時に更新されるため、体感速度が爆速。

#ただし、更新の失敗が多い場合、callback関数の反映やエラーをユーザーが見逃していると、「反映したはずなのに更新されていない」ということがおこりがちなので、留意されたい。

みのるajaxpost高速化におけるcallback関数のベストプラクティスになりそうな手法

callback関数は、更新失敗時の処理(インターフェイスの巻き戻し&エラー通知)だけを書いて共通化することができるはずなので、たくさん書く必要はないと思われる。

補足

従来のcallback関数による更新が一般的なのは、callback関数が便利すぎるためだと思う。「言語が思考を規定する」というサピアウォーフの仮説によるバイアスで発想が制限されているため、通信処理の更新はcallback関数でやるのが常態化しているのだと推測したりしなかったりしている。SNSとかゲームくらいのいい加減なシステムならガンガンつかっていいはず。特に、ゲームはレスポンス命なので、この技術を応用するとユーザー体験が圧倒的に向上するはず。

#この記事は、以前自分で書いた記事からの転載です
#ちなみに私はみのるではありません
日本語:http://goo.gl/RbUvd
英語:http://puriketu99.blogspot.com/

10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9