小説をperlで動的に出力していますが、読み込んだページがIEだと重いです。perlが原因ではないかもしれませんが、他に原因を見つけられません。高速な処理方法など教えてください。
「usrname」という作者の「title」という作品ページを開くと、/usrname/title/midashi001.datといった感じで1話1ファイルとして格納してあるファイルを、midashi001.datから順に読み込んで出力しながら最後の見出しまで入出力を繰り返すという仕組みになっています。データ型は、「作品ID<>備考<>日時<>見出し<>本文」となっていて、改行コードがない1行のファイルです。
現在のところ、
my @array = split /<>/,
で分割して、本文を表示する部分に$array[4]をprintしているのですが、本文自体が100KBを超えたりしてすごく長かったりすると、ページを開くときに、フリーズ気味になったり、開ききったあともスクロールがものすごく重くなったりします。
問題は、これがIEに限っている、ということです。FF、Opera、GCなどのモダンブラウザでは、普通の軽いページ同様に快適な閲覧ができるのです。このページではjavascriptと、cssのopacityを使用していまして、それがIEでだけ重くなる原因かと思い、ブラウザがIEの場合のみjavascriptを読み込まないようにして、かつ本文表示欄の背景色を半透明にするcssのfilterもオフになるようにしてみたのですが、変わりませんでした。
AOL Pagetestという、IEで使えるアドオンを使用してページ読み込みで時間がかかっている部分を分析してみると、やはりcgiの部分で1000~1200msぐらいかかっていました。
javascriptがIEで重いというのはよく聞く話ですが、
Perlの処理においてIE(私の環境ではIE9)だけが重い、ということはあったりするのでしょうか。
また、このように一行があまりにも長いデータをsplitで分割しているのが重い原因だとするならば、より高速・効率的な処理法を教えていただきたいです。よろしくおねがいします。
IEの問題として、文字エンコードが原因の場合があります。
処理的には多分問題は内容なので、出力されているページのエンコードのあたりを探ってみたらいかがでしょうか。
お二人ともありがとうございました。エンコード関係、ファイル分割など数通り試してみて、いまだ解決にはいたっておりませんが、一度締めさせて頂きたいとおもいます。また質問するかもしれませんのでその時はよろしくお願いいたします。
IE の処理速度にも問題はあると思いますが、基本的には出力のサイズが大きすぎるのだと思います。読みやすさも考慮してページを分割したり、ファイルを分割したりするしかないのではないでしょうか?