故意减慢 HTML/PHP 页面加载以进行测试

Posted

技术标签:

【中文标题】故意减慢 HTML/PHP 页面加载以进行测试【英文标题】:Intentionally Slow Down HTML/PHP Page Load to Test 【发布时间】:2011-11-16 09:15:42 【问题描述】:

我很好奇是否存在故意减慢页面加载速度的方法?

我现在正在本地主机上测试我的 htmlphp 页面,我想看看当页面加载速度较慢时我的加载 gif 等将如何执行。

我意识到这是一个罕见的请求,因为大多数开发人员只关心加快页面加载速度,但我认为可能有一种方法可以使用 javascript/jQuery 或 PHP 来执行类似的操作这是出于测试目的。

感谢您的帮助!

注意:我正在 MAMP 上进行测试,所以这是在 Mac OS 10.7 上运行的 Apache 服务器

【问题讨论】:

嗯,你总是可以用 3200 波特调制解调器替换你的网络连接.... 如果你想减慢每个请求(包括图像),这必须在服务器或操作系统级别;您使用的是哪个服务器/操作系统? @mblase75 - +1 和邪恶幽默感的道具 ;) @arnaud576875 - 我使用的是 MAMP,所以是 Apache 和 Mac OS 10.7 【参考方案1】:

一点点 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

【讨论】:

一个和我名字差不多的人同时回答这个问题,这有点令人毛骨悚然,哈哈。 @Joe - 这似乎是最简单的,只要它可以工作。我应该用什么包裹setTimeout() 当然可以:P 把它放在<script type="text/javascript">CODE HERE</script> 中,然后任何你想延迟的东西,把它放在“这里的延迟代码”注释所在的位置。有关基本示例,请参见修改后的帖子。例如,假设你的加载 GIF 默认可见,所以将代码隐藏在超时内,它会等待 5 秒,然后隐藏你的加载 GIF。 @Joe - 哦,我明白你在说什么。这不只是延迟了加载 gif 的删除吗?它并没有真正模仿缓慢的页面加载,是吗? 嗯,这真的取决于你如何设置它:) 如果你有在页面加载时运行的 JS,你可以把它放在延迟中,它会在稍后执行。如果您希望停止 PHP 脚本的完成,那么您需要 sleep,正如 Cyclone 所提到的。两者都是正确的,这就是您想要的方式:)【参考方案2】:

你可以使用sleep():


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

...
html here
...

【讨论】:

【参考方案3】:

在您的 PHP 代码中调用 sleep() 以延迟对服​​务器的请求。

【讨论】:

【参考方案4】:

您可以使用 php 的 sleep($seconds) 函数来减慢页面加载速度。但是,如果您希望在处理完页面之前将任何内容发送到用户的浏览器,则需要将implicit output buffer flushing to "on" 与ob_implicit_flush(true); 一起转换。否则,您的页面在加载完成之前不会有任何内容。单独调用 sleep 是不行的。

【讨论】:

优秀的答案。我会看看你提供的链接。我确定这个问题在链接中得到了回答,但ob_implicit_flush(true);php.ini 的一部分吗? 没关系,我应该先检查一下链接。它在 PHP 文件本身中调用。谢谢,我试试看! 没问题!让我知道这是怎么回事。【参考方案5】:

这是我会尝试的: 使用 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://***.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/

2015-04-09 更新 使用 Chrome 的“设备模式”: 此工具具有网络限制功能,可让您查看您的页面在网络带宽较慢的设备上的呈现方式。它具有许多其他功能,可让您在各种设备上模拟功能,例如屏幕尺寸和触摸。

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

【讨论】:

这听起来是一种非常有创意的方法,我喜欢它。但是我想知道:这不会延迟加载程序 gif 图像本身的加载吗?我想通过延迟页面内容的加载来测试加载器 gif 和其他加载器设置;不是加载器 gif 本身。但是,我在想,我可以轻松更改您的代码以延迟加载页面上的一个或多个图像;从而延迟页面加载并展示加载器 gif 等。我说得对吗? 你是对的。我想我误解了你的问题。我的回答更倾向于延迟图像的加载。但是,您可以对任何其他资源使用相同的概念。这显然是一个 hack。更好的方法是使用“网络模拟器”。此类工具非常常见,它们允许您模拟低带宽网络。请参阅:***.com/questions/1094760/…。 谢谢。我已经对此进行了调查,除非我弄错了,否则您提供的链接中提供的资源均不适用于 Mac。你知道一个好的开源网络模拟器吗?您知道 MAMP 中是否有一种方法或 MAMP 的附加组件可以模拟慢速网络连接或高流量? 请看这篇文章中显示的资源:@​​987654323@【参考方案6】:

您可以使用sloppy local web proxy 来减慢您的连接速度(它在 JAVA 中,因此它可能会在您的开发机器上运行。您可能还想关闭 mod_deflate 以进行测试,如果您愿意,您的浏览器会如何响应减慢 HTML 加载速度(例如,动态大小的 HTML 表格等)

另外,请参阅 webmasters.stackexchange.com 上的 this question

【讨论】:

【参考方案7】:

Moussa 有正确的想法。测试页面加载缓慢的最佳方法是使用 Chrome 的开发者工具。选择网络选项卡,然后单击显示“无限制”的下拉菜单。然后将页面更改为您想要的速度。

这种方式优于使用 sleep 功能,因为您不必弄乱任何代码,然后记得将其取出。如果您想更改速度,只需更改节流级别即可。

有关限制check out the docs 的更多信息。

【讨论】:

这是一个不错的功能...!【参考方案8】:

在 Chrome 中,您可以使用开发者工具模拟慢速互联网连接。在最右侧的“网络”选项卡下。您可以使用“Fast G3”之类的预设,也可以使用准确的数字创建自己的预设,用于上传、下载和 ping。

参考:https://helpdeskgeek.com/networking/simulate-slow-internet-connection-testing/

【讨论】:

Firefox 在 Network 下也有类似的东西。默认情况下,有一个下拉菜单显示“无限制”,但您可以通过选择其他选项来有意减慢页面速度。

以上是关于故意减慢 HTML/PHP 页面加载以进行测试的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 Rails 中模拟/减慢资产加载速度?

减慢浏览器渲染速度

Yandex metrika 标签减慢网站速度谷歌页面速度 isights 报告

css 这里的问题是在我们的页面上放置这么大的文件会减慢那些也试图加载到山姆的其他页面元素

故意减慢 FPS Spritekit

如何在页面加载时更改 HTML 内容