Doge log

Abby CTO 雑賀 力王のオフィシャルサイトです

Ajaxを使うときの設計 その2

使い方間違えると自爆しますよと。
個人的にはAutoCompleteってどうなのかなと。
使える前提をちゃんと示さないとなあ。
そーいう意味ではsuggest.jsはいいね。
ちゃんと書いてあるもんね。
で個人的自爆しそうなパターンは

DBアクセスを伴う場合

こいつは危険な可能性が。
物にもよるけどバンバンDBに問い合わせが発生するとやっぱり辛い。
とはいえAutoCompleteで商品名をCompleteできるとやはり喜ばれるのも事実。
対策:

  • 問い合わされるデータはキャッシュ化
  • 問い合わされるデータを限定
  • 問い合わせに行く回数を減らす

まー当たり前だけど。
AOPが使えるDIを使っているケースであればAOPで対象のメソッドに対しInterceptorをかまし、Interceptorでmemcachedにあるデータを返すようにするとかね。
(これは多分実装しそう)

問い合わせるデータ

割と思い込み的なことだけど。
1回の通信で1データを返さないといけない理由はない。
多分

new Ajax.Updater('blk','mess.html',{method: 'get'});

これさえ覚えておけばいいやという人が多いのではないだろうか。
本当はあるAというデータを取りに行くときに他も先読みしおくなど複数データを返すことができる。
(私がJSFDojoで実験をしているようなこと)
またvalidateなどでエラーチェックをし、複数のメッセージを出したり、エフェクトなどもできる。
一回の通信で効率よくデータ(制御)を取るのがAjax(だと私は思っている。)
だからといってデータ量が大きすぎても問題だけど。
対策:

  • Ajaxで取りに行くデータを見直す(先読みとか)
  • Ajaxでやりたい事を見直す
  • Ajaxで返すデータのフォーマットを見直す

最後のAjaxで返すデータのフォーマットを見直すは私がよくブログで書いてる事だけどjavascriptを返すといろんなことができるよって事。
XMLで返してもいいけどどーせjavascriptでなんか行うわけだしさ。


Cometが出てくればもっといろんなことができるんだけどね
うくく。