• ベストアンサー

IEで長いWEBページを表示した場合に、スクロールがループしてCPU使用率が100%になります

下記現象にて困っております。 解決策をご存知の方がいらっしゃいましたら、ぜひご教授下さい。 ______________________        │ タイトル一覧      │         ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ メニュー  | コンテンツ内容    |        |               |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ PHPにて、上記のようなフレーム構成のWEBページを作成しておりました。 メニューをクリックすると、タイトル一覧が表示されるのですが、 タイトル一覧の行数が650行を越える辺りから、メニューを選択した時に、 CPUの負荷が異常に高くなったままになります。 そこで、タイトル一覧のスクロールバーをずっと下に押しっぱなしにして みたところ400行辺りから、401->402->403->400->401->402->403->404 ->400・・というように表示がループしておりました。 何度か試したところ、これは、タイトル一覧のフレームにフォーカスを あてることで、解消されることがわかり、読み込み時にjavascriptで フォーカスをあてるようにしました。 これで万事OKかと思っていたのですが、この現象は、ウィンドウの最大化等 を行った時にも、再描画の為に発生することが判明し、どうしたらいいもの かと困っています。 現在、判明していることは下記4点になります。 (1)一覧が650を越える辺りから発生する。それ以下だと発生しない。 (2)フォーカスをあてることで、処理が正常に行われ、解消する。 (3)コンテンツの場合はなぜか650行を越えても発生しない。 (4)MicroSoftサポートにある「スムーズ スクロールを使用しない」に設定 を行っても、解消されない。 ページ分割も考えたのですが、全件表示を一機能としてもたせたいと考えて います。

  • PHP
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

ループしていたのではなく描画能力が追いついていなかったからではないでしょうか。 この問題はクライアントの環境に依存するのではないかと思います。 もしhelpme_orzさんのPCが高性能のCPUを積んでいてこの結果になってのであれば 描画能力が追いつかない端末が多いことになりますし 描画性能が良くない端末をお使いならば使っている端末で十分に描画が可能な ページに設計をし直す必要があります。 もしかすると300件近くの表示で負荷がかかり止まってしまうかもしれません。 ウェブプログラミングをする立場の人間としてはすべてのクライントで表示できる 「優しいページ」を設計するのが理想であると考えます。 おそらくHTMLタグなどが含まれないテキストだけでの描画はあまり問題ない と思いますが当然スタイルシートを用いたりして600行ともなれば背景の描写など、 グラフィック描画の際の負荷も変わってくると思います。 ブラウザはただデータを表示するだけでなくタグを読み取って 適切な特殊描画効果を与える処理も行うのですから。 ちょっと興味がありさきほど手元の端末で実験をしてみました。 3500件近くのデータをphpmyadminでデータベースから引き出して 全件表示を行ってみたところ完全描画までに1分半ほどかかりました。 (クライアント側はPentium M 1G MEM 768MBの環境) サーバーから吐き出される表示の為のHTMLデータなどは 10秒近くで吐き出されましたので(Vigilでパケットをキャップチャして確認) 明らかにクライアント側での描画に時間がかかっている証拠です。 この結果から、クライアント側の端末性能によっては 大きく変わってくるということがわかるとおもいます。 参考までに、 私が運営するサイトで検索結果を表示する場合はサーバー・クライアントの負荷軽減の為に普段は50件毎にページング処理を行います。 検索結果が100件内なら一括表示が可能ですが それ以上の場合は強制的にページングを行っております。 また、エクセルなどで一度に取得する必要がある場合はcsv方式での書き出しも行っています。

helpme_orz
質問者

お礼

ご回答頂きありがとうございます。 字数制限の為、提供情報が少なくなってしまい申し訳ありません。 YUTAKUN007さんの仰る通り、処理が停止してしまっている感じです。 リストはテーブル構造を用いた複数のカラムからなっており、 SPANタグとCSSで行っているので、それも処理が重くなる理由の1つなの かもしれません。また、私の方もCeleron-1.2G-256M、Pentium4-3.2G -1024Mにて確認を行い、両方で同様の現象が出ることを確認しております。 「優しいページ」に関しても仰る通りで、WEBプログラマとしては、私もそう あるべきと考えます。ただ、今回のサイトに関しましては、公開する対象が 決まっており、ページを切り替える動作を行わず、ホイールの回転だけで、 一覧を眺めたいという要望があった為、入れることとしました。 そこで、この現象をなんとかプログラムで解消できないかと考えています。 気になるのは、フォーカスを当てると、上記2機のPCどちらも一秒以内に 処理を完了してしまうということです。 現象がスペックに依存しないところを見ると、IE側の問題なのでしょうか。 これについては、補足質問という形で出させて頂こうと思います。 朝早くにも関わらず、確認作業まで行って頂き、本当にありがとうございま した。

helpme_orz
質問者

補足

IEで長いWEBページを表示した場合に、表示処理に異常が発生、スクロール 動作がおかしくなり、CPU負荷が100%近くまで上昇、対象のフレームに フォーカスを当てるまで、CPU負荷状況が解消されないことがあります。 フォーカスを当てるとすぐに処理が完了します。 もし、この現象について、御解りになる方がいらっしゃいましたら、 ご教授ください。同現象について、MicroSoftに上がっている回避策「スム ーズスクロールを使用しない」を使用しても、解消することはできませんで した。下記2項目について、調べております。 (1)CPU負荷上昇の発生原因の特定。 (2)CPU負荷上昇の回避策。 以上です、よろしくお願い致します。 私は、本日より2日程、外出することになりますので、返信の方は、戻り次第 とさせて頂きます。戻り次第、私の方でも、再度調べるつもりです。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

CSSによる負荷の可能性もあります。 いちどCSSを切ってなるべく生のデータの ものでテストすると、原因がはっきりするかも しれません。 また何百行も全件表示させてもどちらにしろ 視認性が高いわけではないので得策でないかも しれないですね。 こんな感じでビュー領域を小さくすると 効果ありませんか? <div style="background-Color:#e0e0e0;width:100%; height:200PX; overflow-Y:SCROLL;"> test<br> test<br> test<br> test<br> test<br> test<br> test<br> test<br> test<br> test<br> test<br> test<br> test<br> test<br> test<br> </div>

helpme_orz
質問者

お礼

ご返答が遅くなり大変申し訳ございません。 こちらでもいろいろ思考錯誤しながら、解決策を探してみて、 解決致しました。 やはり、おっしゃるとおり、CSSの負荷が原因と思われます。 DIVやSPANタグを組み合わせ、テーブル表記を行っているのですが、 より簡潔な表現に修正することで解決しました。 自分の至らなさを痛感した次第です。 アドバイス頂きましてどうもありがとうございました。

関連するQ&A

  • IEで「ページが表示できません」がたびたび発生しています。

    IEで「ページが表示できません」がたびたび発生しています。 現象は以下の通りです。 WindowsXP上で、IE6(IE7も同じ現象発生)を使って、右フレームで選択した内容を左フレームに表示する画面があります。 右フレームで、選択した画面が左フレームに表示される前に、別の選択ボタンを押すと「ページが表示できません」とIEの白い画面が表示されることがあります。 Cookieとインターネット一時ファイルを削除してから行うと、起こりにくくなります。 この画面ではCookieを利用しています。 教えていただきたいことは、 (1)上記のような操作をするとなぜ「ページが表示できません」となってしまうのでしょうか。 (2)Cookieを利用する上で、このような現象を発生しないようにする注意点はありますでしょうか。 よろしくご教授ください。

  • (IE8)FRAMEで指定したページが表示されません

    IE7からIE8に更新してからフレームの表示が不可解なものになりました。 現象: index.htmlの中で以下のように指定しています。 <FRAMESET COLS="160,*" FRAMEBORDER=NO BORDER=0> <FRAME SRC="./menu.html" NAME="menu"> <FRAME SRC="./top.html" NAME="main"> </FRAMESET> このindex.htmlを表示すると左側フレームのmenu.htmlは表示されますが、 右側フレームにはtop.htmlではなくmenu.htmlからリンクしている別のページが 表示されます。 IE7の時は普通に左にmenu.html、右にtop.htmlが表示されていました。 IE8でもIE7と同様に表示するようにするにはどうすれば良いでしょうか?

  • CPUの使用率が高くなる事象について

    こんにちわ。業務で行き詰ってしまい、アドバイスをいただきたく質問させていただきます。 稚拙な文章ですがご容赦くださいますようお願いいたします。 ★プログラム構造 アプリケーションのメイン画面にテキストフィールドが配置されていて、 そのフィールドが空白の状態でエンターキーを押下するとポップアップでエラーを表示する。 エラーの表示は、JOptionPaneを継承したクラス内で、JDialogで表示している。 ただし、JDialogのタイトルバー上で右クリックをするとメニューバーが表示されてしまう。 この現象に対して、タイトルバーの部分をペイントすることにより、右クリックを防止しました。 ポップアップは移動できるため、マルチスレッド処理にし常にリペイントがかかるように製造。 ★不具合 ところが運用にて、1ヶ月程度たつとメイン画面の動作が非常に遅いとのクレームが来たので CPU使用率を調べてみたところ80%~90%ぐらいまで上昇していた。 画面上のオペレーションは、何もしてないのに80~90%から減少することはありませんでした。 メモリの使用率は大して使用しておりませんでした。 また発生するマシンはCPUが低スペックのもので発生しています。 メイン画面を再起動(JMの再起動)をすると現象が解消されるため、本アプリが原因と断定しました。 ところが、何が原因なのかがわかりません。 スレッド辺りが怪しいなぁとは思っておりますが。。 調査の切り口や、現象解消方法をご存知の方がいらっしゃいましたらご教授願いたく思います。 以下は環境です。 ◎OS:UNIX(Solaris8) ◎JAVA:1.4.1_03

  • ワード スクロールバーのページ表示

    ワードのスクロールバーをクリックして画面をスクロールすると、「ページ番号 1」というように、今何ページ目かという表示が出ますよね? その表示が何故かおかしくなってしまって、その中にそのページの1行目の文字列まで入ってきたりしてしまうのです。 しかもその次のページにも、ずっと入ってきてしまいます。 これはページのタイトルのような感じで、どこかで設定できるものなのでしょうか? それともこのファイルがおかしくなってしまっているのでしょうか?

  • フレームとスクロール

    frameset により、フレームを左右に分割し、左にメニュー、右にコンテンツを表示しました。 メニューフレームに <a href="・・・・.html#a" target="content">A として、コンテンツフレームに <a name="a"> を設定すると、メニューフレームの「A」をクリックすると、コンテンツのフレームは 「A」のところまでスクロールします。 これを、少し変化させて、 「A」をクリックすると、右スクロールバーを一回クリックしたのと同様に、下に隠れていた 続きの部分が上に移動して表示されるようにしたいのですが、・・・。 HTLMで、こういった処理が可能でしょうか。可能でしたら、教えていただきたいのですが。 不可能でしたら、あきらめます。よろしくお願いします。

    • ベストアンサー
    • HTML
  • CPU使用率100%.

    削除できないビデオクリップファイルが存在するのが原因?でWindows Media PlayerでMP3オーディオを再生すると,wmplayer.exeないしexplorer.exeがCPUを使い切り使用率が100%に至るという状態に陥りました.(ただしその場合でも再生はふんづまらず正常に行われる) いたしかたないのでPCリカバしたのですが,Windows Media PlayerでMP3オーディオを再生したり,他のプロセスもいろいろ立ち上げたりすると,しばらくしてまたexplorer.exeがCPUを使い切る現象が発生しました. ちなみに↓により, http://pcweb.mycom.co.jp/news/2003/06/03/23.html コントロールパネルはクラシカル表示にしてみました. メニューのフェードまたはスライド表示はもともとオフでした. 対処療法心当たりの方いらっしゃいませんか. WindowsXPです.

  • フレームのスクロールを出さない方法(ドリウィ&Flash)

    こんにちは。初めてちゃんとしたHPをドリームウィーバーで 作っているところなんですが、フレームを3つにわけて、 一番上のフレームにflashで作ったメニューボタンを入れて、 コンテンツが真ん中のフレームに来るように設定して作っています。 ボタンの機能など、アクションはきちんとできているのですが、 一番上のフレームにflashのメニューボタンを当て込んだら フレームサイズと高さは変わらないのに、 スクロールバー&空欄ができてしまうんです。 フレームの行を1相対にすると 上下にすごい空欄が出てきてしまうんです。 逆に真ん中のフレームは下に空きができてしまいます。 一番上のフレームの高さ(行)を45pix、 真ん中のフレームの高さ(行)を316pixに設定してます。 当て込んでいるflashは メニューボタンは42pix、コンテンツは316pixの高さです。 どうしたらいいのでしょうか? 環境はMac OS9、Dreamweaver4、Flash5です。 よろしくお願いします。

  • ギャラリーの画像のうち古いものが見れなくなった。

    auのスマホURBANO V03を使用しています。 1か月ほど前から出た現象ですが、 ギャラリーで、写した画像の一覧を表示させ、 古い画像を表示させようとして、 指で一覧の画像を上にスクロールさせると、 しばらくスクロールした直後に「問題が発生したため、ギャラリーを終了します。」と表示が出て、それ以上スクロールすることが出来なくなります。 すなわち、かなり昔に写した画像が見れない状態なのです。 これを解消するにはどうしたらいいでしょうか?

  • 1つのhtmlでフレームのような動きをさせるには

    いつもお世話になっております。 フレームについて質問させてください。 <frame name="header" src="header.html" title="メニュー" scrolling="no"> <frame name="main" src="main.html" title="コンテンツ" scrolling="auto"> 現在、上記のようにフレーム分けを行い、ヘッダー(メニュー)部分は固定にして、メイン(コンテンツ)部分のみスクロールするようにしているのですが、これをフレーム分けせず、1枚のhtmlで同じように行う事は出来るのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • SELECTの長さを指定する

    CGIを改造中です。 フレームで割った構成をしていて左にメニューを置いています。 メニュー部分に今まで入力した情報の題名をセレクトで一覧表示するようにしています。 しかし、題名の中にはちょっと長めの物もあり、フレームからはみ出してしまいます。(右スクロールしないと選択できない) これをどうにか解消できないでしょうか? とりあえず、サイズを指定してみようとしたら縦方向に伸びただけで長さは変化できませんでした。 題名を短く表示したりは出来ないのでしょうか?「題名の頭から○文字目までを表示」とかです。 何か方法があったら教えてください。

    • ベストアンサー
    • CGI