c# – 运行JavaScript setInterval的网站在~1天后开始失败

前端之家收集整理的这篇文章主要介绍了c# – 运行JavaScript setInterval的网站在~1天后开始失败前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我希望我能在这里更具体,但不幸的是,这可能很难.我基本上希望这是一个“很好”的超时或设置问题.

我们有一个网站在工厂的屏幕上运行(JS / html – ASP.net项目)网站概述.这个屏幕没有键盘所以它应该永远刷新页面 – 也许几年(虽然1周可能没问题).
(工厂工人使用它来查看进货运输等)

一切都很完美;该网站不断更新自己并获取新的正确数据.
然后,有时,在早上这个“概述”屏幕没有数据,工作人员必须使用简单的刷新按钮或F5手动刷新网站 – 它修复了所有内容.

我尝试过尝试自己重现错误的一些事情,包括

>削减互联网连接和许多其他方式使其超时(断点,停止服务等).
>将setInterval的刷新时间设置为100毫秒,让站点运行3-5分钟. (正常计时器是1分钟)
> setInterval应该根据我所做的互联网搜索永远运行.
>检查省电设置中是否未关闭JavaScript频率”.

无论;一旦我插入互联网电缆或其他任何东西,网站恢复正常的功能没有刷新 – 我无法重现错误.

该网站依赖于后端WCF服务和项目集成,但由于工作人员通过简单的刷新来解决这个问题,我假设它没有崩溃.

编辑:我尝试重现错误的浏览器是IE / win7.我明天会询问工厂,但我猜IE / win?也.

setInterval实际上是无限的还是这里还有其他错误

所有人都非常感谢.

更新:
我在今天早上离开网站后以调试模式运行,并在网站更新代码的catch子句中使用断点.
有2分钟.超时错误(可能在夜间繁忙的服务器清理),然后在此行之后永远存在空引用错误

var showHistory = (bool)Session.Contents["ShowHistory"];

我用像工人一样的刷新来修复它.
我现在认为它可能是会话超时,尽管我们一直在ping服务器..
当然,我的特定会话超时可能是由断点导致它在第一次超时时永远挂起 – 仍然行为与出厂时相同.
我将确保稍后用最终解决方案更新你们.

更新2:测试正在进行中.

更新3:工厂是IE 9,他们的测试机器是IE 7,我的机器是IE 9.错误是在IE7上看到的,但在周末运行后不是我的IE9.
我们尝试在关键的data_binding代码关闭ajax缓存,但它没有做任何事情.
我测试了内存泄漏,如果我每分钟刷新100次,就可以创建一个合适的泄漏.我不认为这是问题,刷新清理使用的内存.

我们现在将尝试自动刷新的东西.

最佳答案
setInterval()应该永远存在.但是,您的脚本/页面可能会泄漏某种资源,最终导致页面脚本或浏览器内部出错.

如果是这种情况,您最终可能会追踪泄漏的资源类型并解决实际问题,但即使这样做,某些浏览器也会遇到自己长时间运行的问题.

可能值得观察资源使用情况,以查看浏览器内存使用量是否随着页面运行时间的延长而上升.但是,由于F5修复它,我建议,作为一种安全措施,您只需每隔几个小时重新加载一次页面.在大多数现代浏览器中,页面重新加载,释放与先前页面运行相关联的所有资源,并从该角度为您提供清晰的平板.

只是这样做(每六个小时触发一次):

setTimeout(function() {
    window.location.reload(true);
},6 * 1000 * 60 * 60);

不仅会给你一个干净的开始,而且还会自动使你的应用程序每隔一段时间检索你可能对应用程序进行的任何服务器端更改,因此如果你发出错误修复,它将自动部署在几个小时.

您还可以在页面中使用元刷新标记.

猜你在找的JavaScript相关文章