随分前に作って放ったらかしだった
ATND Search
の改修を行いました。
問題点
ActiveResource使って、APIのデータをカレンダーに突っ込むだけのアプリなんですが、
ATNDの人気が出過ぎて、月当たり500件以上というイベント数になっており
データ取得に時間が掛かりまくってました。
実は、APIの制限上1アクセス当たり100件までの取得しかできないため、
全件取得だと6回(毎回1.x〜2.x秒ほど)もアクセスしていました。
⇒事実上使えないので、アクセス数減らしたい。
解決策
悩んだ結果、案4で仮実装。
案1
定期的にcrawlして、DBに入れたらいいやん。
→せっかくActiveResource使ってるので、違う方法で実装したい。
→却下
案2
検索条件設定を必須として、取得対象データを少なくする。
→100件以内になるように制御できるなら、ありかも。
→でも、きっと関東圏(東京)が多くを占めるので、そっちの人は、それほど効果的でないかも。
→却下
案3
ajaxでリクエスト毎に追加。
→ポコポコ増えるのやだ。(あとsort面倒)
→却下
案4
定期的にcrawlして、DBに入れずにon memoryで処理。
→複数月をメモリに入れるのは面倒なので、
(暫定的に)参照頻度の高いページは当月だろうし、とりあえず他は参照対象外としてみる。
→翌月のページも見れるようにした方がいいとは思うが
とりあえず、この辺の実装は後で考える。
過去のデータは変更されないので、ここはDBでもいいか?