- ベストアンサー
HTML化によるホームページの高速化方法について
HTML内で外部サーバにあるCGIをjavascriptとして起動させて、 結果を表示する方法を行っていますが、実行させるjavascriptの数が多くなるに連れて ページが表示されるまでに時間がかかってしまいます。 そこで、ページが表示されるたびに毎回javascriptを表示させる方式(下例のold.html)ではなく、 old.html内のjavascript部分を実行させたものをHTML化したnew.htmlを 自動で作成するcgi(下例のtranslate.cgi)などを作りたいと考えていますが、 どのように作ればいいのでしょうか。 【old.html(一部抜粋)】 <BR>下記にtest.cgiの実行結果が表示されます!<BR> <SCRIPT language="javascript" src="http://www.xxx.com/test.cgi"></SCRIPT> 【test.cgi(一部抜粋)】 print "Content-Type: application/x-javascript\n\n"; print "document.write('<P>test.cgiの実行結果だよ</P>');"; 【new.html(一部抜粋)】 <BR>下記にtest.cgiの実行結果が表示されます!<BR> <P>test.cgiの実行結果だよ</P> ●translate.cgiの仕様は、下記の内容を考えています。 perlについては少しだけ理解はしているのですが、 (3)部分のプログラム方法がわかりません。 【translate.cgi】 (1)old.htmlファイルをオープンする (2)old.htmlファイルを一行ずつ読み込み、javascript以外であれば、 そのままnew.htmへ書き込む (3)javascriptの場合には、実行させた結果を取得しnew.htmlへ書き込む 大変お手数お掛けいたしますが、 どうぞよろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
CGIはJavascriptを実行することができません。 Javascriptはクライアント(ユーザ)の環境で動くものです。 実際、CGIがどのような作業をしているのかが分からないので、なんともいえませんが、大抵のことならばCGIで実行可能と思います。 どのようなことをなさりたいのかを補足してください。
その他の回答 (1)
- hrm_mmm
- ベストアンサー率63% (292/459)
別のサーバーにあるcgi出力の取得は、perlではLWPというモジュールで出来るようですけど(使い方の詳細は御自分で調べて下さい)。 あと、別のサーバーにあるcgiの出力をJavaScript構文ではなく、html文書か、csv形式に変更できなければ、JavaScript構文解釈をperlにさせるのはとってもきついのでは? 相手のcgi出力のJavaScriptが、単純にdocument.write();の羅列だけなら、()の中身を取り出してファイル出力すれば良さそうではありますけど。
お礼
コメントありがとうございました。 相手のcgi出力のJavaScriptですが、単純にdocument.write();の羅列だけとなっています。 比較的に簡易に出来るかなと考えていたのですが、難しいようですね。LWPについては知っていましたが、再度勉強してみます。
お礼
早速のコメントありがとうございます。 私が行いたいものの内容についてもう少し説明させて頂きます。 まずは、大変お手数ですが下例のホームページをご覧ください。 http://ps3-head.xrea.jp/news.html このページ内には、下のような外部cgiの実行が javascriptで複数かかれています。 <script language="JavaScript" src="http://ps3-head.xrea.jp/rss/jsRSS.cgi?url=http://myrss.jp/rdf/rXXXXX.rdf?v10::line=7::enc=sjis::temp=jsRSS.tmp"></script> このような外部cgiは、実行数が多くなるにつれてページの表示が遅くなってしまいます。 そこで、上記の外部cgiを実行して得た結果を別のhtmlに埋め込みたいと考えているのです。 具体的には、参考でご紹介させて頂いたサイトは、 外部cgiとしてニュース情報を自動取得し、その結果を返しているものです。 そこで、ユーザへ「http://ps3-head.xrea.jp/news.html」のページを直接見せるのではなく、 ニュース情報を取得してHTML化したもの(例えば、news_output.html)をユーザへ 見せる方式にしたいと考えています。 (news_output.htmlでは、news.htmlのjavascript部分が実行されて取得した、 ニュース情報がhtmlとして直接記載されているイメージです) 私が作成したいHTML化cgi(translate.cgi)というのは、 「http://ps3-head.xrea.jp/news.html」のようなページを読み込み 外部cgi実行部分を実行し全てHTML化したnews_output.htmlを 作成するcgiになります。 cgiからjavascriptを実行するのが不可能であれば、 cgiから他の外部cgiを実行しその結果を取得できる方法があれば なんとか出来るのかなと感じていました。 このような例による効果を表しているものとしては、2chがあると聞いています。 2chではユーザが掲示板を閲覧する都度、cgiで記事データを処理参照して表示しているわけではなく、 普段はHTML化したページをユーザへ見せて、記事の更新があった場合に、 あらたにHTML化を行っていると聞いた記憶があります。 このようにすることで、ページの表示速度が向上しますし、何よりサーバへの負荷も軽減されます。 大変面倒なご質問でお手数お掛けいたしますが、 これが可能となることで様々な事へ応用が出来き、 多少負荷が多いと思われるページの作成も容易となります。 どうぞよろしくお願い致します。