web-dev-qa-db-ja.com

テストのためにHTML / PHPページのロードを意図的に遅くする

意図的にページの読み込みを遅くする方法があるかどうか知りたいのですが。

私はHTMLをテストしています&PHP=ページを今すぐテストしています。ページのロードが遅いときに、gifなどのロードがどのように実行されるかを確認したいと思います。

ほとんどの開発者はpページ読み込みの高速化のみに関心があるため、これはまれな要求であることを理解していますが、javascript/jQueryまたはPHPを使用して、このようなテストを行う方法があると考えました目的。

助けてくれてありがとう!

注:私はMAMPでテストしているので、Mac OS 10.7で実行されているApacheサーバーです

35
stefmikhail

PHPの sleep($seconds) 関数を使用して、ページの読み込みを遅くすることができます。ただし、ページの処理が完了する前にユーザーのブラウザーに何かを送信したい場合は、ob_implicit_flush(true);を使用して 暗黙的な出力バッファーのフラッシュを「オン」に にする必要があります。それ以外の場合、ロードが完了するまで、ページにはコンテンツがありません。睡眠だけを呼び出してもうまくいきません。

15
Cyclone

Chromeでは、開発者ツールを使用して低速のインターネット接続をシミュレートできます。右端の「ネットワーク」タブの下。 「Fast G3」のようなプリセットを使用するか、アップロード、ダウンロード、およびpingのために正確な数値を使用して独自のプリセットを作成できます。

enter image description here

リファレンス: https://helpdeskgeek.com/networking/simulate-slow-internet-connection-testing/

6
Bolphgolph

Moussa は正しい考えを持っています。遅いページの読み込みをテストする最良の方法は、Chromeの開発者ツールを使用することです。ネットワークタブを選択し、[スロットルなし]と表示されているドロップダウンをクリックします。次に、ページを希望の速度に変更します。

この方法は、コードをいじる必要がないため、sleep関数を使用するよりも優れています。速度を変更したい場合は、スロットルレベルを変更するだけです。

スロットルの詳細については ドキュメントをチェックしてください

3
Maximus

これは私が試してみるものです:画像のソースとしてphpリソースを使用してください:

<img src="images/gifLoager.php" />

gifLoader.phpで、画像ファイルを読み取り、ループで遅延しながらバイト単位で出力します。

$fp = fopen( $path, 'rb');
while(!feof($fp)) {
        print(fread($fp, 1024));
        flush();
        Sleep(1);
     }
fclose($fp);

バイナリデータを出力する前に、ヘッダーを適切に設定することを忘れないでください。

参考文献:

http://stackoverflow.com/questions/1563069/stream-binary-file-from-mysql-to-download-with-php
http://php.net/manual/en/function.sleep.php
http://www.gamedev.net/topic/427622-php-and-file-streaming-script-with-resume-capability/

UPDATE 2015-04-09Use Chrome 'Device Mode':このツールには、ネットワークスロットル機能があり、ネットワーク帯域幅が遅いデバイスでページがどのようにレンダリングされるかを確認するには、画面サイズやタッチなどのさまざまなデバイスの機能をエミュレートできる他の多くの機能があります。

https://developer.chrome.com/devtools/docs/device-mode

3
xtrem

sleep() を使用できます:


<?php
// Delays for 10 seconds.
sleep(10);
?>

...
html here
...

sloppy local web proxy を使用して接続を遅くすることができます(Javaであるため、おそらく開発マシンで実行されます。テスト目的でmod_deflateをオフにすることもできます)。したがって、ブラウザが遅いHTMLロードにどのように応答するか(たとえば、動的にサイズ変更されるHTMLテーブルなど)

また、webmasters.stackexchange.comの この質問 も参照してください。

0
Matija Nalis

JS setTimeoutの少しはトリックを行うことができます

setTimeout(function()
{
    // Delayed code in here
    alert('You waited 5 seconds to see me'); // Waits 5 seconds, then alerts this
}, 5000); // 5000 = 5 seconds
0
Joe

PHPコード内で sleep() を呼び出して、サーバーへのリクエストを遅延させます。

0
Eric