web-dev-qa-db-fra.com

Ralentir intentionnellement le chargement de la page HTML / PHP à tester

Je suis curieux de savoir s'il existe une méthode pour ralentir intentionnellement le chargement de la page?

Je teste mes pages HTML et PHP sur mon hôte local en ce moment, et je veux voir comment mon chargement gif, etc. fonctionnera lorsque le chargement de la page sera plus lent.

Je me rends compte que c'est une demande rare car la plupart des développeurs ne se préoccupent que de l'accélération p des chargements de page, mais j'ai pensé qu'il pourrait y avoir une méthode, en utilisant soit javascript/jQuery ou PHP, pour faire quelque chose comme ça pour les tests fins.

Merci pour toute aide!

Remarque: je teste sur MAMP, c'est donc le serveur Apache fonctionnant sous Mac OS 10.7

35
stefmikhail

Vous pouvez utiliser la fonction sleep($seconds) de php pour ralentir le chargement d'une page. Cependant, vous devez activer vidage implicite du tampon de sortie sur "on" avec ob_implicit_flush(true); si vous souhaitez que quelque chose soit envoyé au navigateur de l'utilisateur avant que la page ne soit en cours de traitement. Sinon, votre page n'aura AUCUN contenu tant qu'elle n'aura pas été chargée. Appeler le sommeil seul ne fera pas l'affaire.

15
Cyclone

Dans Chrome, vous pouvez simuler une connexion Internet lente avec les outils de développement. sous l'onglet "Réseau" à l'extrême droite. Vous pouvez utiliser un préréglage comme "Fast G3" ou créer le vôtre avec des nombres exacts pour le téléchargement, le téléchargement et le ping.

enter image description here

Référence: https://helpdeskgeek.com/networking/simulate-slow-internet-connection-testing/

6
Bolphgolph

Moussa a la bonne idée. La meilleure façon de tester un chargement de page lent est d'utiliser les outils de développement de Chrome. Sélectionnez l'onglet réseau, puis cliquez sur la liste déroulante qui dit "Pas de limitation". Modifiez ensuite la page à la vitesse souhaitée.

Cette méthode est supérieure à l'utilisation de la fonction de veille, car vous n'avez pas besoin de jouer avec n'importe quel code, puis n'oubliez pas de le retirer. Si vous voulez changer la vitesse, changez simplement le niveau de limitation et vous êtes prêt.

Pour plus d'informations sur la limitation consultez la documentation .

3
Maximus

Voici ce que j'essaierais: utiliser une ressource php comme source de l'image:

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

dans gifLoader.php, lisez votre fichier image, sortez-le octet par octet avec un retard dans la boucle.

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

N'oubliez pas de définir correctement les en-têtes avant de sortir les données binaires.

Références:

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/

MISE À JOUR 2015-04-09 Utilisez Chrome 'Mode appareil': cet outil dispose d'une fonction de limitation du réseau qui vous permet pour voir comment votre page peut s'afficher sur un appareil avec une bande passante réseau lente. Elle possède de nombreuses autres fonctionnalités qui vous permettent d'émuler des fonctionnalités sur divers appareils tels que la taille de l'écran et le toucher.

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

3
xtrem

Vous pouvez utiliser sleep () :


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

...
html here
...

vous pouvez utiliser proxy web local bâclé pour ralentir votre connexion (il est en Java, donc il s'exécutera probablement sur votre machine devel. Vous pouvez également désactiver mod_deflate à des fins de test, si vous le souhaitez donc comment votre navigateur réagit à un chargement HTML lent (par exemple, des tableaux HTML de taille dynamique, etc.)

Voir aussi cette question sur webmasters.stackexchange.com

0
Matija Nalis

Un peu de JS setTimeout peut faire l'affaire

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

Appelez sleep() dans votre PHP pour retarder la requête au serveur.

0
Eric