我希望我可以在这里更具体,但不幸的是这可能很难。我基本上希望这是一个“很好”已知的超时或设置问题。运行JavaScript setInterval的网站在〜1天后开始失败
我们有一个网站在工厂的屏幕上运行(JS/html - ASP.net项目)网站概述。这个屏幕没有键盘,所以它应该永远刷新页面 - 也许多年(尽管1周可能没关系)。 (工厂工人使用它来看传入的运输等)
这一切都完美的作品;该网站不断更新自己并获取新的正确数据。 然后,有时候,在早上这个“概览”屏幕上没有数据,工作人员必须使用简单的刷新按钮或F5来手动刷新网站 - 这可以修复所有问题。
我已经尝试了几件事情试图重现错误我自己,包括:
- 切割互联网连接,使之超时(断点,停止服务等)的许多其他方式。
- 将setInterval的刷新时间设置为100ms,让站点运行3-5分钟。 (正常计时器是1分钟)
- setInterval应根据我所做的互联网搜索永远运行。
- 检查“JavaScript频率”在省电设置中未被关闭。
无论如何;该网站恢复正确的功能,无需刷新,只要我插上网线或其他任何东西 - 我不能重现错误。
该网站是依赖于后端WCF服务和项目集成,但由于工作人员正在解决这个简单的刷新我假设这没有崩溃。
编辑:我试图重现错误的浏览器是IE/win7。我明天会问工厂,但我猜IE /胜利?也。
setInterval实际上是真的无限还是有其他的错误呢?
所有帮助非常感谢。
更新: 在网站更新代码的catch子句中,在离开网站以调试模式运行并断点的情况下,我今天上午来了。 有一个2分钟。超时错误(可能在晚上繁忙的服务器清理),然后永远地后,在这条线的空引用错误:
var showHistory = (bool)Session.Contents["ShowHistory"];
我像工人刷新固定它。 我现在认为它可能会话超时虽然我们一直在ping服务器.. 当然,我的特定会话超时可能是由于断点导致它在第一次超时时永久挂起 - 仍然是行为相同在工厂。 我会确保稍后更新你们的最终解决方案。
更新2:测试正在进行中。
更新3:工厂是IE 9,他们的测试机器是IE 7,我的机器是IE 9。在IE7上看到错误,但是在周末运行后没有看到我的IE9。 我们尝试在我们的关键data_binding代码期间关闭ajax缓存,但它什么也没做。 我测试了内存泄漏,并能够创建一个体面的泄漏,如果我每分钟刷新100次。我不认为这是问题,但刷新清除了使用的内存。
我们现在尝试自动刷新的东西。
+1因为我有一个类似的系统,并有兴趣知道这是否是一个问题。 – chead23
什么浏览器/操作系统/硬件......这可能是一整套不同的事情,说实话。 – Dabloons
如果你刷新整个页面,这不应该是一个问题。如果代码使用ajax加载新内容,那么内存泄漏可能导致脚本最终失败。 – Pointy