gpt4 book ai didi

javascript - iPad ajax问题

转载 作者:数据小太阳 更新时间:2023-10-29 03:53:10 26 4
gpt4 key购买 nike

长话短说:我必须创建一个聊天功能,它似乎适用于除 iPad(可能还有 iPhone)以外的所有设备。我们的客户使用他们的 iPad 聊天,所以我尝试解决过去 7 个月来的问题。

这就是我找出问题所在的时间。

问题显然出在 iPad 的浏览器上。我使用库 jQuery 运行 JSON Ajax 请求。请求很好,它们不包含错误。在某些时候,iPad 根本不运行 Ajax 请求。我不知道为什么,我找不到原因。每个 Ajax 请求都会被记录下来,但有时服务器不会收到任何请求。我已经问了无数次,客户肯定他们只是在触摸 ipad 以防止它被锁定。

我已将请求速率降低到每分钟大约 15 个请求,但这没有用。

所以,我的问题是:有没有人知道为什么 ipad 在 10-15 分钟后突然停止发送 Ajax 请求的信息?

最佳答案

把它放在这里,因为在注释中没有任何语法高亮显示。

我在这里做了一个 super 简单的测试页:http://www.focalstrategy.com/tests/ajax.php

代码是:

<?

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {

echo date("F j, Y, G:i:s a");
exit();

}

?>
<!doctype html>
<html>
<head>
<title>AJAX test</title>
</head>
<body>
<h1>Ajax Test</h1>
<p>This page makes an AJAX request every 5 seconds and replaces the div below with the returned date.</p>

<div><p id="date"><?= date("F j, Y, G:i:s a") ?></p></div>
<div><p><span id="count">0</span> updates made.</p></div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
var count = 0;

var getDate = function() {
$.get('/tests/ajax.php', function(data) {
$('#date').html(data);
count = count + 1;
$('#count').html(count);
});
}
setInterval(getDate, 5000);
</script>

</body>
</html>

所以,我运行了一个小时,没有任何问题,iPad(完全更新)自始至终运行良好,没有遗漏任何东西。

我还在 Chrome 上运行了它并记录了它的行为。这看起来像这样:

Chrome Profiler view, showing graphs for DOM Node, Event Listeners and memory usage.

( Full size )

这里有一些奇怪的地方,一开始事件监听器的数量保持不变,然后在一段时间后变得疯狂,增加到 56 个监听器,然后再次下降到 1 个。 DOM 节点数也反复出现峰值,高达 424。考虑到这段代码的简单性,两者都有相当奇怪的行为。

也许在您的应用程序上,正在跟踪的 Dom 节点数或事件监听器的数量正在达到某个值,导致 iPad 无法跟踪正在发生的事情,或类似的事情。

还值得注意的是,在垃圾回收发生之前,内存使用量会增加。这就是应该发生的事情,尽管它在 iPad 上的效率可能较低。

编辑:我在干净的配置文件上再次测试了它,许多事件监听器是由于扩展引起的——发生了相同的行为,但程​​度不同,背景值也是 0-1 而不是 15-20

关于javascript - iPad ajax问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10801833/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com