検索ページを作る
楽天APIでお薦め商品を表示するツール、作ってみた話の4回目です。
今回は、APIツールで検索した結果をキャッシュする話です。
plamo2.0(と言うツール)でも、24時間キャッシュを持つ仕様になってますが、ネットワークの負荷を考えると、どうしてもキャッシュは必要ですね。
マッシュアップ・サイトを作る話の4回目です。
検索ページを作る
APIを使って楽天の商品を検索できるツールが完成しました。
流れとしては、
【検索キーワードや条件などをHTMLフォームで入れる】
↓
【検索用phpプログラムでキーワードなど検索情報を受ける】
↓
【APIに投げるリクエストURLを組み立ててリクエストを送る】
↓
【返ってくるXML形式のレスポンスを変数に入れる】
↓
【simplexml関数などを使ってXMLを分解する】
↓
【分解した情報で使うモノを配列に作り替える】
↓
【スマーティに配列を送って検索結果を表示する】
という感じです。
検索窓を付けたサイトの例
各ページの上の方と下の方に、検索窓が付いていますが、これがこのときに作っていたPHPプログラム(の発展系)です。
現在は、一つのキーワードで、ユーチューブ動画、楽天市場の商品、Yahoo!ショッピング、Amazonの商品という風に、複数のwebAPIを呼び出す仕組みになっています。
追伸
この辺りのもう少し具体的なPHPプログラムについては、こちらのサイトで紹介しています。
ネットワークの負荷を軽減する
で、ここで問題になるのが、検索によるサーバーの負荷です。
検索すると、サーバーのCPUや外部との通信でネットワークを使うわけですから、いろいろ負荷がかかります。
phpプログラム自体は軽いので、さほどの負荷にはなりません。
が、APIサーバにリクエストを投げたり、レスポンス(返答)を受けたりと言う作業には、ネットワークの負荷がかかります。
だからかも知れませんが、ハッスルサーバーなどでは、こう言う随時外部にアクセスするプログラムは
禁止になってます。
サーバー自体のスピードは速くても、ネットワークにつないで情報をやりとりするのは、どうしても遅くなるし、コストや負荷もかかりますから。
なので同じキーワードで何度も検索する場合、検索結果を貯めて、キャッシュファイルを作った方が良いわけです。
そんなに短時間で検索結果は変わりませんし、ネットワークの負荷が万が一大きくなると、自分の他のページの表示も遅くなってしまいます。
なのでキャッシュは必須ですね。
公開日:2009年08月 14日
追伸
使ってるレンタルサーバーのPHPが7.1系にバージョンアップしたら、なぜかキャッシュが上手く動かなくなったので、現在はキャッシュを使っていません。