jQuery事始め

ほぼ読書記録と化している当ブログ、書影を含む書籍情報は、Amazonの商品情報API(もともとAmazon Web Serviceといえば商品情報APIだったのだが、いまAWSといえばクラウドサービスしか思い浮かばなくなってしまった)から取得している。
各記事にphpの関数(+引数としてamazonの商品コード)を記述して、
各ページ
 |
各記事(アーカイブページでは複数)
 |
phpの関数(0~複数)

のような構造にしている。
この関数が「引数に基づいてサーバーキャッシュを探して、存在すればそれを表示、存在しなければ商品情報APIから情報を引っ張ってHTML断片を生成して表示(ついでにキャッシュに保存)」を都度おこなっているため、月別の読書記録アーカイブの表示が非常に遅い(時として途中で切れてしまう
)という問題があった。
最近、思うところがあってHTMLとかJavaScriptとかjQueryとかを勉強しているので、実戦訓練としてこれをjQueryに書き換えてみた。
基本的な作戦は以下の通り。

  • 各記事に書き込まれている関数の記述は変えない
  • 関数の処理内容を「Amazon商品コードをクラス名に持ったdivタグと、商品コードを配列に追加するJavaScriptを出力」に変更
  • 「Amazon商品コードを引数として受け取って、キャッシュをナニしてAPIをナニしてHTML断片を出力」するphp(=自前API)を準備しておく
  • 各ページの最後にjQueryのコードを組み込み、配列から商品コードを読みだして自前APIにアクセス、得られたHTML断片を各記事内のdivタグに打ち込む

やはりというか、最後のjQueryコードで苦労させられた。単純に.loadだと処理が集中して自前APIがサーバーエラーを返すので.ajaxで失敗したら1秒待ってリトライ、とかちゃんとやろうとするといろいろ面倒くさい。
が、その面倒くささを超えたところにはやはり大きなメリットが待っていることを実感できた。

アーカイブ

Books

未来放浪ガルディーン外伝(1) 大出世。 未来放浪ガルディーン外伝(2) 大ハード。 未来放浪ガルディーン(3) 大豪快。 明日は、いずこの空の下 琥珀の夢 上 小説 鳥井信治郎 琥珀の夢 下 小説 鳥井信治郎 ゼンデギ (ハヤカワ文庫SF) 星系出雲の兵站-遠征- 1 星系出雲の兵站-遠征- 2 星系出雲の兵站-遠征- 3 星系出雲の兵站-遠征- 4 アメリカン・ブッダ (ハヤカワ文庫JA) 星系出雲の兵站-遠征- 5 三体Ⅱ 黒暗森林(上) 三体Ⅱ 黒暗森林(下) クロックワーク・ロケット (新☆ハヤカワ・SF・シリーズ) エターナル・フレイム (新☆ハヤカワ・SF・シリーズ) アロウズ・オブ・タイム (新☆ハヤカワ・SF・シリーズ) 烏は主を選ばない 八咫烏シリーズ 2 (文春文庫) 黄金の烏 八咫烏シリーズ 3 (文春文庫) 空棺の烏 八咫烏シリーズ 4 (文春文庫) アフターデジタル2 UXと自由 あるかしら書店 宇宙一の無責任男シリーズ 無責任艦長タイラー 宇宙一の無責任男シリーズ 明治一代無責任男 宇宙一の無責任男シリーズ ワングの逆襲 宇宙一の無責任男シリーズ外伝 銀河無責任時代 宇宙一の無責任男シリーズ 無責任元帥タイラー 宇宙一の無責任男シリーズ アザリン16歳 宇宙一の無責任男シリーズ タイラー大逆転 宇宙一の無責任男シリーズ外伝 大宇宙(おおぞら)のサムライ 宇宙一の無責任男シリーズ 無責任大統領タイラー 宇宙一の無責任男シリーズ 風速四十光年 宇宙一の無責任男シリーズ 永遠なれ無責任男 宇宙一の無責任男シリーズ外伝 緋き獅子 宇宙一の無責任男シリーズ外伝 厳冬惑星ホロシリの叛乱 無責任キッズ 暗黒太陽小町 無責任キッズ WHY?の嵐 無責任キッズ 燃えてキサラ 無責任キッズ 時先案内人 無責任キッズ 銀河嫁取物語 宇宙一の無責任男シリーズ外伝 カトリくんタンマ 無責任カルテット 君の名はマチコ 宇宙一の無責任男シリーズ外伝 我が名はヤマモト 無責任カルテット 天使・失格 無責任カルテット 邪教殱滅 無責任カルテット 決戦!薔薇色星雲 無責任カルテット 銀河賛唱 無責任三国志 謀略トライアングル 無責任三国志 冷たい三角関数 無責任三国志 炎のトリコロール 無責任三国志 奇跡のトリニティー 無責任三国志 三匹快進撃 無責任三国志 三羽烏登場! 無責任三国志 三つの王冠(クラウン) 無責任三国志 試練の三番勝負! 無責任三国志 サード・ビッグバン 無責任三国志 輝け!トライスター

Link