故意减慢 HTML/PHP 页面加载以进行测试
Posted
技术标签:
【中文标题】故意减慢 HTML/PHP 页面加载以进行测试【英文标题】:Intentionally Slow Down HTML/PHP Page Load to Test 【发布时间】:2011-11-16 09:15:42 【问题描述】:我很好奇是否存在故意减慢页面加载速度的方法?
我现在正在本地主机上测试我的 html 和 php 页面,我想看看当页面加载速度较慢时我的加载 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 页面加载以进行测试的主要内容,如果未能解决你的问题,请参考以下文章
Yandex metrika 标签减慢网站速度谷歌页面速度 isights 报告