※ ChatGPTを利用し、要約された質問です(原文:インタネットイクスプローラによる表示が極端に遅くなります)
インタネットイクスプローラによる表示が遅くなる原因と対処法
このQ&Aのポイント
インターネットエクスプローラによる表示が遅くなる原因として考えられる点は、ブラウザのバージョン(特にIE6)やサーバーの過負荷状態が挙げられます。
原因究明のために行うべき処置としては、まずブラウザのバージョンを最新のものにアップデートすることが推奨されます。また、サーバーの負荷状態を監視し、必要に応じて対策を行うことも重要です。
また、b.php、x.php、y.phpの処理に関しては、変数の競合を回避するために関数を定義し、変数をローカル変数として扱うことが推奨されます。
インタネットイクスプローラによる表示が極端に遅くなります
以下のような構造のa.htmlの表示が度々大幅に遅れ、原因が分からず困っております。
a.html
*
***** b.php
*
***** x.php
*
***** y.php
〔a.html〕
(1) b.phpによって生成される静的なリンクをインラインフレームとして含みます。
(2) 二つのx.php、y.phpをssiにより含みます。
<!--#exec cgi="x.php" -->
<!--#exec cgi="y.php" -->
〔x.php、y.php〕
x.php(y.php)は、それぞれ以下のような処理を行います。
(1) 予め個別に割り付けられたファイルX.txt(Y.txt)の内容を
readfile関数により読み出してssiの対象とします。
(2) その際には、後述するようにb.phpが行うファイルX.txt(Y.txt)の更新処理
との排他制御をflock関数により行います。
〔b.php〕
b.phpは、以下のような処理を行います。
(1) 上記インラインフレーム内に表示される静的なリンクを生成します。
(2) 次にa.htmlにアクセスされたときのために、ファイルX.txt、Y.txtの双方の内容を
上記ssiにより表示されるべき情報に更新します。
(3) その際には、上記ファイルX.txt、Y.txtへのアクセスに関して、
x.php、y.phpとの排他制御をflock関数により行います。
〔a.htmlの表示が遅れる症状〕
(1) 表示が遅れるのは、ブラウザIE(ver 6でのみ確認)のみで発生します。
遅れる時間は、30秒ないし3分30秒程度(一定ではありません。)
(2) ただし、表示が遅れる場合であっても、
a.htmlの先頭にあるヘッダー(複数の静的なリンク)のみは速やかに表示されます。
しかしブラウザ画面上でその下に表示されるべき情報は、既述の通りに大幅に遅れて表示されます。
なお、遅れて表示される情報には、特に不正常な点は見受けられません。
(3) なお、他のブラウザ(firefox.safari.netscape,opera…何れも最新ヴァージョン)の場合には、
ブラウザIEでトライした場合に比べて頻度は少ないものの、
上記b.phpが生成する静的なリンクの表示が10秒~30秒程度遅れる場合があります。
(サーバーの過負荷状態に起因する可能性もあり?)
また、ブラウザIE以外のブラウザでは、
b.phpが生成する静的なリンクの表示が遅れる場合であっても、
その静的なリンク以外の全ての情報は、速やかに表示されます。
以上、大変長くなりましたが、以下の点をご教示下さるようにお願い致します。
・ 原因として考えられる点
・ 原因究明のために行うべき処置(ブラウザIEに関するより望ましい設定を含む)
追伸
b.php、x.php、y.phpに含まれる変数については、
これらのphp本体の全体をそれぞれfunctionとして定義し、
このようにして定義されたfunctionを冒頭部で呼び出し、
変数の全てをローカル変数と定義することによって、
変数の競合による誤処理を回避しています。
お礼
mizuno3様、ありがとうございます。 教えて頂いたは、 問題解決のための再考時に大きな「気付き」となりました。 おかげさまで、b-phpとx.php、y.phpとの間における排他制御を 徹底的に「粗」とする(詳細は省略させて頂きます。)ことで、 php上での関連性は当初より大幅に「密」となったものの、 問題は一応解決できました。 ここで、質問を締め切らせて頂きますが、 今後とも、どうかよろしくお願い致します。
補足
早速教えて頂き、ありがとうございます。 質問の投稿後に行った調査の結果は、以下の通りです。 (1) javascriptや画像などの外部読み込みファイルの読み込みが遅くなっている… →その通りです。表示が止まっている状態で確認したhtmlソースには、 y.phpの結果としてssiによりサーバから転送される部分が含まれていません。 (2) SSIはHTMLを生成してから書き出すと思うので、ブラウザ依存にはならないんじゃないかと… →上記結果によれば、b-phpとx.php、y.phpとの排他制御の結果として表示が遅れていると思われます。 (3) この排他制御の関係を可能な範囲で実験的に「粗」としてみたところ、表示が遅れる確率は大幅に少なくなりました。 以前はブラウザの更新ボタンのクリックを2~5回行うたびに発生していましたが、この値が80~90程度となりました。 (4) さらに、確認すると、ブラウザIEに限って、更新ボタンのクリック回数が「1」であるにもかかわらず、サーバには、2回の更新要求が送信されていることを確認しました。 ブラウザ依存となる主要な原因は、これであるものと思われます。 そこで、さらに教えて頂きたいのですが、 (1) 上記「2回の更新要求」が送信される現象は、ブラウザIEのバグなのでしょうか。また、ブラウザの設定で回避され得るものなのでしょうか。 ネットであれこれ調べたのですが、該当する情報を得ることはできませんでした。 (2) IE以外のブラウザで更新ボタンを続けざまにクリックして等価な負荷をサーバに与えることにより、「IEで生じている表示の遅れを再現しよう」と試みましたが、無理でした。 サーバ側は、上記「2回の更新要求」を単なる負荷の増加のみと認識せず、今回の表示の大幅な遅れの原因とする振る舞いをしている可能性がありますでしょうか。 また、このような場合における対処の方法はありますでしょうか。 以上、お手数ですが、さらなる原因の切り分けの方法がありましたら、是非併せて教えて頂きたく、よろしくお願い致します。