- ベストアンサー
RSSの表示速度に不満。
WEB上でRSSを取得できて表示が可能なのですが、 その表示速度に不満があります。 はっきりいって遅い! perlでもPHPでもやはり表示速度には 問題があるのでしょうか? 当方が利用しているRSSのリーダーのモジュールは以下、 XML::RSS です。これって解析に時間がかかるモジュールなんでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
とりあえず・・・ XML関係モジュールは巨大で、コンパイルが重すぎるので、 CGIで使うのはあきらめた方がよいですね。。 mod_perlのような、インタープリタ常駐環境なら、 このへん大丈夫だと思うのですが・・・ 一旦パースしたデータは、Storableを使うと、 データ構造そのまま簡単に保存したり、 読み直したりができます。 なぜかあまり使われないモジュールなのですが・・・私は 結構気に入ってます(^^
その他の回答 (2)
ANo.1さんのおっしゃるとおり、 サーバー側からのRSS取得にかかる時間もありますが・・・ もう一つのポイントとして・・・ XML関係のモジュールが激重なのです。 Perlインタープリタがモジュールをロードするだけで(CPUや実行環境にもよりますが)数秒かかることがあります。重たいレンタルサーバーなんかでは使いたくないモジュール、ですね。
補足
お返事ありがとう! XML関係のモジュールが重いっていうことは、 他のモジュール(XML関係)を選択しても やっぱり重くなるってことですよね;; RSS取得にかんしては LWP::Simpleモジュールをつかって サイズからはんだんして更新していれば 一度ファイルとして保存する形をとってます。 そんで、そのファイルに対、XML::RSSモジュールで対象ファイルを解析する方法をとってるのですが、 一時的に、たとえば、取得したRSSのデータをキャッシュ上で持っておく方法とかってできるんでしょうか? 結局、中身的には、あまりたいしたことをしてはいないのですが、 複数のサイトのRSSを読み取り、それを更新順に並べ替え、 ページ判断を取り付けページ移動できるようにしてるのです。 その、実際に表示を行う際の時間がどーにもみじかくならないんです;; あるてーどやってはいるのですが、ぅーーん いまいちです;;
- steel_gray
- ベストアンサー率66% (1052/1578)
本当に解析で時間をとっているのでしょうか? 他のサイトからRSSを取得して解析しているのだとしたら、他サイトからのRSSファイルの取得に時間がかかっているのではないでしょうか? 他サイトからの取得には相手サーバとの通信を行いますから相手からの返事があるまでは待たなくてはいけない。相手サーバや通信経路が混んでいればそれだけ待たされます。(テキストファイルの解析とは桁違いの時間が必要になる。) 適当な時間が経つまではキャッシュを利用するとか、 ヘッダだけリクエストして更新時刻を見るとか(ヘッダだけでもそれなりに時間はかかる事も多いからあまり改善は期待できないかも) 工夫しだいでパフォーマンスの改善の余地はあるかも。 そんな事は充分承知で純粋にXML::RSSが遅いと感じているのでしたら駄レス失礼!
補足
お返事ありがとう! 検証した結果、やっぱり読み込みではなく 解析部分で遅くなっているようです;; ヘッダだけリクエストする方法もいいかもしれませんね^_^ ちょっと挑戦してみます。^_^
補足
お返事ありがとぅー! ちょっとわかんない点があるのですが Storableモジュールを使うとデータ構造をそのまま 保存できるのはわかるんですが、 えっと、仮にStorableで保存したデータから 特定のキーでハッシュもしくは、配列等の処理ができるなら OKだと思います。 保存する際に、もーデータを加工しちゃって簡易データベース化しちゃうってことでしょうか? たしかにそうすればできなくないですね。 それも、ちょっとためします^_^ ホント、度々お返事ありがとうございます^^