May 07, 2004

Similarity Search の負荷軽減に jscache

Bulkfeeds Similarity Search をはじめとして、Javascript 型でページにはりつける系のサービスはいくつかありますが、大きな問題点として、

  • js をフィードしているサーバの負荷にページの表示が引きずられる

という問題がありました。Bulkfeeds でもキャッシュして出力するなどの努力はしていて、2度目以降は高速にサーブできるはずなのですが、著名なサイトでのアクセスが多かったり、検索結果のRSSへのアクセスが集中したりすると Apache のスロットを食いつぶしてしまい、Similarity Search 設置側のページで待たされることなんかもたまに発生していました。

この問題を解消するために jscache という CGI スクリプトを作成しました(別名: くっつきキャッシュ)。このスクリプトのやっていることは単純で、リモートの js を取得して、サーバ側にキャッシュして保存。キャッシュ有効期間中は自分のサーバからコンテンツを吐き出すようにするものです。これならホスト側のサーバ負荷に表示が引きずられることはありません。レンタルサーバなどでCGIが利用できる環境にある方は、利用してみてください(インストールが簡単になるよう、モジュールを一切使用していません)。

Bulkfeeds Similarity Search を例にして設置方法を解説します。
  1. jscache をダウンロードして CGI を実行可能なディレクトリに配置します。(mod_perl でも動くはずです)
  2. 20 行目の $remote_url = "http://bulkfeeds.net/app/similar.js"; とします。
  3. キャッシュ用のディレクトリを作成、chmod go+w して、24行目の $cache_dir に設定します。
  4. 27 行目 $cache_ttl にはキャッシュする時間を設定します。60分ぐらいが適当でしょう。
  5. LWP がインストールされていない場合、34 行目 $get_app に wget や lynx などのコマンドラインを入力します。

MT の Individual Entries (または他のBlogツールの該当テンプレート) の http://bulkfeeds.net/app/similar.js の部分を http://あなたのサーバホスト名/jscacheの設置場所 に変更して、リビルドします。これで、js の表示はあなたのサーバから行われるようになり、Bulkfeeds 側のサーバ負荷に影響されなくなります。(キャッシュがきれた場合などのアクセスはのぞく)

動作が確認できたら、設定変数 $debug を 0 にしておけばエラーがうるさくならずにすみます。

FAQ

Bulkfeeds でしか使えませんか?
$remote_url 変数を変更すれば他の js 型貼り付けサービスでも使えると思います。(というかただのプロキシ+キャッシュスクリプトなので js じゃなくてもホントは使えます)
js 1個につき 1 jscache ってことですか?めんどくないですか?
そういうことになります。URL もパラメータ化してもいいんですが、open proxy として悪用される可能性があるので、一応ソースに設定する形にしてあります。やりたい人は $remote_url を $ENV{PATH_INFO} あたりから取得するように改良すればできます。
$remote_url = $ENV{PATH_INFO};
$remote_url =~ s!^/!!;
こうして、http://ホスト/jscache/http://example.com/hoge.js として使えばよいでしょう。
これを使うとどういうメリットがあるのかよくわかりません。
Bulkfeeds (や他の js 吐き出しサービス) が重いときでもあなたのページの表示が遅くなりません。またあなたのサイトが著名なサイトでアクセスが多い場合にはぜひ利用してもらえると Bulkfeeds 側が負荷が減って助かります。
将来的にこれを使わないと Similarity Search が使えなくなったりしますか?
その予定はないです。
Posted by miyagawa at May 7, 2004 08:35 PM | Permalink | Comments (3) | TrackBack(41)
Comments

私も似たような中継君JSという同機能のものを作っていたのですが、エラー時の処理を手抜きしています。(このエントリのトラックバックされた方で中継君JSを紹介してくださった方々ありがとうございます。)
jscacheのソースを拝見して、自分の作成したCGIを見直そうと誓いました。はい。

Posted by: あんでるどん on May 7, 2004 11:26 PM

Miyagawa さま。TBでとても有用な情報をお知らせ頂き有り難うございました。早速僕の方でも利用させて頂きたいと思います。多謝!!

Posted by: drk on May 8, 2004 06:04 PM

トラックバックでお知らせ頂き、どうもありがとうございました!

Posted by: マユミ on May 13, 2004 11:11 PM
Trackbacks
TrackBack URL for this entry: http://blog.bulknews.net/mt3/mt-tb.cgi/976
jscache、リリース!
Excerpt: おお!キャッシュ機能が独立して追加できるとは!! TB で知らせて貰いました。ありがとうございます この問題を解消するために jscache という CGI
Weblog: あそびをせんとやうまれけむ
Tracked: May 7, 2004 09:42 PM
Similarity Search の負荷軽減
Excerpt: うちは成功。でもココログには LWP が入ってないので、うまく動かないみたいです。
Weblog: チェリオメアリー
Tracked: May 7, 2004 10:33 PM
jscacheとか
Excerpt: 「jscache作った!」とかTrackBackされたので読んでみる。blosxomの場合は動的生成で使っている人が多いので、これを使うとCGI(blosxom)からCGI(jscache)を呼ぶことになり、なかなかなこと(微妙な言い回し)になるかも。TTL効いている間はすぐ終わるスクリプトだし、Bulkfe...
Weblog: hail2u.net - Weblog
Tracked: May 7, 2004 10:43 PM
jscacheと中継君JS
Excerpt: Similarity Search と Amazon Search がかなり重くなってきました。数秒はまたされるので、いったん消してしまったほうがいいかな、と思っていたら、blog.bulknews.net: Similarity Search の負荷軽減に jsca...
Weblog: StarChartLog @cocolog
Tracked: May 7, 2004 11:04 PM
jscache ver.0.01
Excerpt: Bulkfeeds Similarity Searchなどjavascriptを使用した外部サービスの使用を非常に軽快にしてくれるcgi(でいいんですよね)、jscacheがリリースされた。 blog.bulknews.netSimilarity Search の負荷軽減に jscache...
Weblog: VNDN-NKJG
Tracked: May 7, 2004 11:32 PM
Similarity Search の jscacheを使ってみる
Excerpt: ふにゃっ?トラックバックがblog.bulknews.netさんの「Similarity Search の負荷軽減に jscache」から、おひらの「Bulkfeeds: Similarity Search をつけてみた」にきている。 いったい?と覗きにいったおひらであったりする。 ふにふに・・・ どーやらBulkfeedsさんのサイ...
Weblog: Ruby site
Tracked: May 8, 2004 12:53 AM
Similarity Search の負荷軽減に jscache
Excerpt: 「Similarity Search の負荷軽減に jscache」とのことなので、さっそく入れてみましたが、最初はうまく動かず。...
Weblog: A-tak on PC Weblog
Tracked: May 8, 2004 01:26 AM
Similarity Search 高速化!
Excerpt: Similarity Search の総本山、Bulnews 様から Trackback 頂いた (感涙) jscache を実装しました。Similarity Search は圧倒的に高速化!結果を自宅サーバー側に cache することで高速化しています。これ、アイディアだなぁ。そうそう、こういうの必要だったんですよ! b...
Weblog: Idea&&Technology->Blog
Tracked: May 8, 2004 03:56 AM
JavaScript系記事貼付サービスの負荷軽減に、jscache
Excerpt: blog.bulknews.net: Similarity Search の負荷軽減に jscache こういうの、欲しかったんですよねえ。 うちの場合、SimilaritySearchよりもBlogPeopleに悩まされてて…(あと時々FeedBack)。...
Weblog: ここギコ!
Tracked: May 8, 2004 06:11 AM
「おとなりのBlog」使ってみる。
Excerpt: blog.bulknews.net: Bulkfeeds: Similarity Search リリースわかりやすく言うと、「おとなり Blog」とか呼ばれるようなものです。Blog エントリに含まれる文章を形態素解析し、特徴的単語を抜き出して、それらの単語で Bulkfeeds の RSS Item 全文検索します。 早速、導入...
Weblog: D@nny's cafe BLOG
Tracked: May 8, 2004 10:14 AM
Similarity Search の負荷軽減に jscache
Excerpt: かなり、はやくなった。 Similarity Search の負荷軽減に jscache ここに書いている以外で変更したところ jscasheをjscache.cgiにリネーム MT の Individual Entries で http://あなたのサーバホスト名/jscache.cgi...
Weblog: PunkFreak.com
Tracked: May 8, 2004 11:00 AM
Similarity Search の負荷軽減に jscache
Excerpt: かなり、はやくなった。 Similarity Search の負荷軽減に jscache ここに書いている以外で変更したところ jscasheをjscache.cgiにリネーム MT の Individual Entries で http://あなたのサーバホスト名/jscache.cgi...
Weblog: PunkFreak.com
Tracked: May 8, 2004 11:01 AM
jscache で Similarity Search の負荷軽減・高速化
Excerpt: この日記は、個別記事のページ(Individual Archive) に、Bulkfeeds の Similarity Search を付けています。 これは、ページが表示されるたびに bulkfeeds.net サーバ上の JavaScript が呼び出されて、結果が出力される仕組みですので、私のサーバには負荷がかからないも�...
Weblog: 津田ふみかの日記
Tracked: May 8, 2004 05:08 PM
カスタマイズ vol.25-2
Excerpt: JavaScriptを使ってリスト取得している物を参照元サーバー依存ではなく、自サーバーのキャッシュを使用して動作を軽く出来るようにJavaScriptで得たリストをキャッシュするCGIを設置してみる。
Weblog: G@MANIA ver.MT - CODE:Hyena -
Tracked: May 8, 2004 07:19 PM
jscache
Excerpt: nagasawaさんのところでみた記事に反応してBulkfeedsのmiyagawaさんが作られたjscacheというjsファイルをキャッシュするCGIスクリプトをBlogpeopleで使ってみようとトライ。 適当にディレクトリ(ここではcgiとしました)をつくってそこにtmpというディレクトリをつく�...
Weblog: ぐーたら日記
Tracked: May 9, 2004 03:01 AM
jscacheをカスタマイズ
Excerpt: jscache使用と改善
Weblog: Outside of mind
Tracked: May 9, 2004 01:14 PM
NP_SimilaritySearch v1.1.0
Excerpt: blog.bulknews.netでmiyagawaさんがSimilarity Searchの結果をキャッシュするCGIを発表していました。ならば、拙作のNP_SimilaritySearchにも同じ機能をつけてしまおう!という単純な発想でプラグインをアップデ...
Weblog: cles::blog
Tracked: May 9, 2004 08:43 PM
Similarity Search の負荷軽減に jscache
Excerpt: #Bulkfeedsさんがとても便利なツールを公開。JSを一定時間キャッシュすることでページ表示速度を改善するもの。早速導入してみました。 このサイトにもたくさんJSがあるのだが、実は一番遅いのはページ上部のRadiostormの曲名表示JS。ホントは全てキャッシュ化したいのだ...
Weblog: Clip-log : clip.zive.net
Tracked: May 10, 2004 04:04 PM
中継君JSを導入
Excerpt: しばらく前になりますが、bulknews.net さんから jscache のお知らせトラックバックを受けました。一度試してみたのですが、どうしてもうまく行かず、同じような機能がある、中継君JS (by あんでるどんさん) を使わせていただくことにしました。 これで個別アーカイブでの...
Weblog: from TSUKUBA
Tracked: May 10, 2004 08:36 PM
jscache
Excerpt: MTB!出発の直前に、トラックバックでjscacheの通知をいただいたので、これを導入しました。0.02の方ね。 BBBでは自前でごにょごにょしている部分は、わりとキャッシュしていますが、他からの呼び出しサービスのキャッシュにも使えるので便利そう。...
Weblog: BBBLOG
Tracked: May 11, 2004 06:41 PM
いろいろサイト改造 メモ
Excerpt: 今日は諸処諸々の事情からサイトをいろいろいじることにした。 Bulkfeeds Similarity Searchを導入 以前から便利そうだとは思っていたのだが、なぜか実装をためらっていた。 今回入れてみて分かったことは、自分のサイトばかりが引っかかること。俺、文章の書き方ヘタなの...
Weblog: slo-review BLOG
Tracked: May 12, 2004 06:41 AM
Javascriptのキャッシュ:中継君JSにしてみる
Excerpt: bulkfeed.netの宮川さんから、トラックバック経由で「類似した記事」で使っているBulkfees Similarity Searchで、javascriptのキャッシュを使ってほしいとの連絡。 Similarity Search の負荷軽減に jscache Bulkfeeds Similarity Search をはじめとして、Javascript 型で�...
Weblog: Aga-Ye!! : Kasedac
Tracked: May 16, 2004 06:27 PM
「Similarity Search の負荷軽減に」
Excerpt: 個別記事の下のほうに「Similarity Search」という素晴らしい機能があるのですが、問題点として表示されるまでに時間が掛かったこと。 それとあちらのサーバも相当な負担になっていたのではないかと思います。 Similarity Searchの管理人さんからわざわざトラックバックで...
Weblog: ::WHATSOEVER ;)
Tracked: May 16, 2004 08:39 PM
BulkfeedsのSimilarity Searchへの負荷軽減にjscache
Excerpt: blog.bulknews.net: Similarity Search の負荷軽減に jscacheで紹介されていたjscache 0.02を設置しました。BulkfeedsのSimilarity Searchを個別のエントリーの下の方に表示していますが、 毎回Bulkfeedsに読みに行くのではなく指定した時間までは自分のサーバー内でキャ�...
Weblog: Going My Way
Tracked: May 16, 2004 08:46 PM
「おとなりBLOG&BOOK」の負荷軽減に中継君JS導入
Excerpt:  当サイトでは、「おとなりBOOK&BLOG」をつけていますが、これは、Javascript で提供元のサーバが生成したコードをページにはりつけるタイプのサービスです。ただ、問題点がありまして、コードをフィードしているサーバの負荷にページの表示が引きずられてしまうのです...
Weblog: やまだのほうむぺえじ
Tracked: May 19, 2004 02:15 PM
「おとなりBLOG&BOOK」の負荷軽減に中継君JS導入
Excerpt:  当サイトでは、「おとなりBOOK&BLOG」をつけていますが、これは、Javascript で提供元のサーバが生成したコードをページにはりつけるタイプのサービスです。ただ、問題点がありまして、コードをフィードしているサーバの負荷にページの表示が引きずられてしまうのです...
Weblog: やまだのほうむぺえじ
Tracked: May 19, 2004 02:15 PM
Webサイトをちょっと改良:Similarity Search の負荷軽減
Excerpt: 似た記事を自動的に探してくれて、リンクまでを自動的に表示してくれるサービス、Similarity Search は便利だけれども設置していなかったときに比べてWebサイトの表示がちょっと重くなっていた。 まあ、便利である点と表示してくれるリンクがきっかけで新しい発見が多いの...
Weblog: Zakimi::Blog
Tracked: May 19, 2004 10:08 PM
負荷軽減を目指して
Excerpt: 先の「Similarity Search」を導入後、やはり気になったのは"重さ"。 そこで、これを導入してみました。 Bulkfeeds:「Similarity Search の負荷軽減に jscache」 軽くなったような気がします…か?...
Weblog: sera::log
Tracked: May 21, 2004 07:46 PM
「おとなりBlog」設置方法を改良したよ
Excerpt: 記事の一覧表示状態では表示せず、パーマネントリンクで個別の記事を見るときだけ表示されるようにしてみた。 これですっきり。
Weblog: unwired
Tracked: June 3, 2004 12:25 AM
Similarity Search powered by Bulkfeeds
Excerpt: 以前にもちょこっとご紹介した、Bulkfeedsの「似たものエントリーサーチ」ですが、書くエントリーの下にリアルタイムで表示するようにさせてみました。結構面白いですねぇ。 へんてこなものが似たもの紹介される場合も、「ああ、このキーワードに引っかかったのかな」なん...
Weblog: WebMURATA::WebLOG
Tracked: June 26, 2004 11:41 AM
中継君JSとSimilarity Search
Excerpt: Amazon Searchを利用するにあたって、各サーバーへの負担軽減のためにcacheを自サーバー内に設置しておりました。 UnderDone あんでるどん 餡照丼: 中継君JS Ver1.2.1リリース コレにより(キャッシュの期限が切れていない限り)2回目以降のページ表示は高速化されていたの�...
Weblog: Diary::Weblog
Tracked: July 8, 2004 11:26 AM
中継君JSとSimilarity Search
Excerpt: Amazon Searchを利用するにあたって、各サーバーへの負担軽減のためにcacheを自サーバー内に設置しておりました。 UnderDone あんでるどん 餡照丼: 中継君JS Ver1.2.1リリース コレにより(キャッシュの期限が切れていない限り)2回目以降のページ表示は高速化されていたの�...
Weblog: Diary::Weblog
Tracked: July 8, 2004 11:27 AM
Similarity Search の負荷軽減に jscacheをやってみた。
Excerpt: blog.bulknews.net: Similarity Search の負荷軽減に jscache 以前から表示速度が重たくなっていて、導入しようと思っていたのを昨日やってみました。 意外と簡単でした。 表示速度もあがり満足です。 【導入方法】 Blog.bulkfeeds.netさんとこをまず参照して下さい。 う�...
Weblog: takeratta::Blog+
Tracked: July 23, 2004 01:14 AM
Similarity Search powered by Bulkfeeds
Excerpt: …ってなわけで話がそれてしまったけど、文意検索がも少しまともなものに、かつ安価なものになってくると、本当に面白ことができそう。とはいえ、下手すると意識操作にも応用が利くから怖いところではあります。 ※先だっての、ウェディング告訴による google から悪徳商�...
Weblog: WebMURATA::WebLOG
Tracked: July 24, 2004 08:16 AM
jscacheでSimilaritySearchの負荷軽減
Excerpt: Similarity Search の負荷軽減に jscache(blog.bulknews.net) (takeratta::Blog+) 話題に共通性のあるエントリーを見つけて表示してくれるSimilarity Searchですが、自分のサイト内に情報をキャッシュすることで表示時間が節約できるらしく、早速導入して見ました。上のta...
Weblog: the meager
Tracked: July 24, 2004 02:39 PM
中継君JSVer.1.1.0リリース
Excerpt: 中継君JSをバージョンアップしました。 このCGIは jscacheと同じく Jacascript を出力するサービスのキャッシュをします。 こうすることによって、サービスを提供しているアプリケーションサーバへの負荷を軽減し、 たとえば、blogpeopleやbulkfeedsがアクセス過多で応答�...
Weblog: UnderDone あんでるどん 餡照丼
Tracked: August 6, 2004 07:10 PM
jscacheでSimilarity Searchの負荷軽減
Excerpt: Bulkfeedsを使った関連記事の検索(Similarity Search)が...
Weblog: pebbleinsky's blog
Tracked: August 13, 2004 12:25 AM
Windows Server 上での jscache 動作不具合の修正方法
Excerpt: 先日、Similarity Search の高速化で利用した jscache ですが、Win + IIS で実行しようとすると、パラメータが多い場合に動作しなくなると言う不具合を発見しました。暫定ながら jscache の 68 行目(0.01/0.02両Ver.とも同じです)を以下のように変更すると修正できます�...
Weblog: Idea&&Technology->Blog
Tracked: August 18, 2004 07:09 AM
サイドバーにおすすめ商品を簡単にクリップ!
Excerpt: このサイトも含め、あちこちのブログなり日記でサイドバーに管理人さんのおすすめ商品を紹介しているサイトをよく見かけます。あれってどうやってるんでしょう?サイトによってまちまちなんですかね?? ちなみにウチのサイトの場合、手書きでタグを書いて、そのファイル�...
Weblog: こりゃまた余談
Tracked: September 12, 2004 08:54 PM
自分の関連記事を探してくれる!
Excerpt: ○自分のBLOGと関係ありそうなものを、google検索して表示。 いいわぁ(^...
Weblog: 634(ムサシ)の宴
Tracked: December 10, 2004 10:52 AM
中継君JSとSimilarity Search
Excerpt: Amazon Searchを利用するにあたって、各サーバーへの負担軽減のためにcacheを自サーバー内に設置しておりました。 UnderDone あんでるどん 餡照丼: 中継君JS Ver1.2.1リリース コレにより(キャッシ...
Weblog: Diary::Weblog
Tracked: October 28, 2005 04:55 AM
Post a comment