Намеренно замедляйте загрузку страницы HTML/PHP для тестирования

Мне любопытно, существует ли способ намеренно замедлить загрузку страницы?

Я сейчас тестирую свои страницы HTML и PHP на своем локальном хосте и хочу посмотреть, как будет работать моя загрузка gif и т. Д., Когда загрузка страницы будет медленнее.

Я понимаю, что это редкий запрос, так как большинство разработчиков заботятся только об ускорении загрузки страниц up, но я подумал, что может быть метод, использующий javascript/jQuery или PHP, чтобы сделать что-то подобное для тестирования. целей.

Спасибо за любую помощь!

Примечание. Я тестирую MAMP, так что сервер Apache работает на Mac OS 10.7.


person stefmikhail    schedule 13.09.2011    source источник
comment
Ну, вы всегда можете заменить свое сетевое соединение модемом на 3200 бод....   -  person Blazemonger    schedule 13.09.2011
comment
Если вы хотите замедлить все запросы (включая изображения), это должно быть на уровне сервера или ОС; какой сервер/ОС вы используете?   -  person Arnaud Le Blanc    schedule 13.09.2011
comment
@mblase75 - +1 и респект за злое чувство юмора ;)   -  person stefmikhail    schedule 13.09.2011
comment
@ arnaud576875 - я использую MAMP, так что это Apache и Mac OS 10.7.   -  person stefmikhail    schedule 13.09.2011


Ответы (8)


Вы можете использовать функцию php sleep($seconds), чтобы замедлить загрузку страницы. Однако вам нужно будет включить неявную очистку выходного буфера. с ob_implicit_flush(true);, если вы хотите, чтобы что-то было отправлено в браузер пользователя до завершения обработки страницы. В противном случае на вашей странице не будет НИКАКОГО содержимого, пока она не загрузится. Призыв сна сам по себе не поможет.

person Cyclone    schedule 13.09.2011
comment
Отличный ответ. Я посмотрю ссылку, которую вы дали. Я уверен, что на этот вопрос есть ответ по ссылке, но является ли ob_implicit_flush(true); частью php.ini? - person stefmikhail; 13.09.2011
comment
Неважно, я должен был сначала проверить ссылку. Он вызывается в самом файле PHP. Спасибо, я попробую! - person stefmikhail; 13.09.2011
comment
Без проблем! Дайте мне знать, как это происходит. - person Cyclone; 13.09.2011

В Chrome вы можете имитировать медленное подключение к Интернету с помощью инструментов разработчика. на вкладке «Сеть» справа. Вы можете использовать предустановку, такую ​​как «Fast G3», или создать свою собственную с точными числами для загрузки, загрузки и проверки связи.

введите описание изображения здесь

Ссылка: https://helpdeskgeek.com/networking/simulate-slow-internet-connection-testing/

person Bolphgolph    schedule 09.08.2018
comment
В Firefox есть что-то подобное в разделе «Сеть». Существует раскрывающийся список, в котором говорится, что по умолчанию нет дросселирования, но вы можете намеренно замедлить страницу, выбрав другой вариант. - person Kiko; 22.01.2020

Вот что я бы попробовал: использовать ресурс 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/

ОБНОВЛЕНИЕ 09-04-2015 Используйте Chrome «Режим устройства». Этот инструмент имеет функцию ограничения скорости сети, которая позволяет вам увидеть, как ваша страница может отображаться на устройстве с низкой пропускной способностью сети. Он имеет множество других функций, которые позволяют вам эмулировать функции на различных устройствах, такие как размер экрана и сенсорный ввод.

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

person xtrem    schedule 13.09.2011
comment
Это звучит как невероятно творческий метод, и мне это нравится. Однако мне интересно: не будет ли это задерживать загрузку самого изображения GIF загрузчика? Я хочу протестировать загрузчик gif и другие настройки загрузчика, отложив загрузку содержимого страницы; Не сам загрузчик gif. Однако я думаю, что могу легко изменить ваш код, чтобы отложить загрузку одного или нескольких изображений на странице; Таким образом, задержка загрузки страницы и демонстрация загрузчика gif и т. д. Я прав? - person stefmikhail; 13.09.2011
comment
Вы правы. Думаю, я неправильно понял ваш вопрос. Мой ответ больше касался задержки загрузки изображения. Однако вы можете использовать ту же концепцию для любого другого ресурса. Это явно взлом. Лучше использовать сетевой эмулятор. Такие инструменты очень распространены и позволяют эмулировать сеть с низкой пропускной способностью. См.: stackoverflow.com/questions /1094760/. - person xtrem; 14.09.2011
comment
Спасибо. Я исследовал это, и если я не ошибаюсь, ни один из ресурсов, предоставленных по предоставленной вами ссылке, не предназначен для Mac. Вы знаете хороший сетевой эмулятор с открытым исходным кодом? Знаете ли вы, есть ли в MAMP метод или надстройка для MAMP, которые имитировали бы медленное сетевое соединение или высокий трафик? - person stefmikhail; 14.09.2011
comment
См. ресурсы, показанные в этом сообщении: stackoverflow.com/questions/130354/ - person xtrem; 16.09.2011

У Moussa правильная идея. Лучший способ протестировать медленную загрузку страницы — использовать инструменты разработчика Chrome. Выберите вкладку «Сеть», а затем щелкните раскрывающийся список с надписью «Без регулирования». Затем измените страницу на желаемую скорость.

Этот способ лучше, чем использование функции сна, потому что вам не нужно возиться с каким-либо кодом, а затем не забыть его вынуть. Если вы хотите изменить скорость, просто измените уровень дросселирования, и все готово.

Дополнительные сведения о регулировании ознакомьтесь с документацией.

person Maximus    schedule 11.01.2016
comment
Это хорошая функция...! - person Giri Annamalai M; 30.08.2017

Вы можете использовать sleep():


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

...
html here
...

person Joel A. Villarreal Bertoldi    schedule 13.09.2011

Немного 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
person Joe    schedule 13.09.2011
comment
Это немного жутко, что кто-то с почти таким же именем одновременно отвечает на этот вопрос, лол. - person Joel A. Villarreal Bertoldi; 13.09.2011
comment
@Joe - это кажется самым простым, если это сработает. Во что мне обернуть setTimeout()? - person stefmikhail; 13.09.2011
comment
Конечно, это работает :P Поместите это в <script type="text/javascript">CODE HERE</script>, а затем все, что вы хотите отложить, поместите это туда, где находится код задержки в этом комментарии. См. измененный пост для основного примера. Например, по-видимому, ваш загрузочный GIF отображается по умолчанию, поэтому поместите код, чтобы скрыть его в тайм-ауте, и он подождет 5 секунд, а затем скроет загрузочный GIF. - person Joe; 13.09.2011
comment
@Joe - О, я понимаю, что ты говоришь. Разве это не просто отсрочка удаления загрузочного gif? На самом деле это не имитирует медленную загрузку страницы, не так ли? - person stefmikhail; 13.09.2011
comment
Ну, это действительно зависит от того, как вы его настроили :) Если у вас есть JS, который запускается при загрузке страницы, вы можете поместить его в задержку, и он будет выполняться позже. Если вы хотите остановить завершение PHP-скрипта, вам нужен sleep, как упоминалось в Cyclone. Оба правы, это просто то, как вы хотите это сделать :) - person Joe; 13.09.2011

Вызовите sleep() в своем PHP-коде, чтобы отложить запрос к серверу.

person Eric    schedule 13.09.2011

вы можете использовать небрежный локальный веб-прокси, чтобы замедлить ваше соединение (это в JAVA, поэтому вероятно, работает на вашей машине разработки. Вы также можете отключить mod_deflate для целей тестирования, если хотите, чтобы ваш браузер реагировал на медленную загрузку HTML (например, HTML-таблицы с динамическим размером и т. д.)

Также см. этот вопрос на webmasters.stackexchange.com

person Matija Nalis    schedule 31.08.2013