gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 04:19:00 25 4
gpt4 key购买 nike

我希望我能在这里更具体,但不幸的是这可能很难。我基本上希望这是一些“众所周知”的超时或设置问题。

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

这一切都很完美;该站点不断 self 更新并获取新的正确数据。然后,有时候,在早上这个“概览”屏幕上没有数据,工作人员必须使用简单的刷新按钮或 F5 手动刷新站点 - 这可以解决所有问题。

我尝试了一些尝试自己重现错误的方法,包括:

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

无论如何;一旦我再次插入互联网电缆或其他任何东西,该网站就会恢复正常功能而无需刷新 - 我无法重现该错误。

该网站依赖于后端 WCF 服务和项目集成,但由于工作人员正在通过简单的刷新修复此问题,我假设它没有崩溃。

编辑:我试图重现错误的浏览器是 IE/win7。明天问工厂,我猜是IE/win?还有。

setInterval 实际上是无限的还是这里有其他问题?

非常感谢所有帮助。

更新:今天早上,我让网站在 Debug模式下运行,并在网站更新代码的 catch 子句中设置了一个断点。有 2 分钟。超时错误(可能在夜间忙于服务器清理)然后永远在此行出现空引用错误:

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

我像 worker 一样用刷新修复了它。我现在认为这可能是 session 超时,尽管我们一直在对服务器执行 ping 操作。当然,我的特定 session 超时可能是由于断点导致它在第一次超时时永远挂起 - 行为仍然与工厂相同。稍后我会确保向你们更新最终解决方案。

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

更新 3:工厂是 IE 9,他们的测试机器是 IE 7,我的机器是 IE 9。在周末运行后,IE7 上出现错误,但我的 IE9 上没有。我们尝试在我们的关键数据绑定(bind)代码中关闭 ajax 缓存,但它什么也没做。我测试了内存泄漏,如果我每分钟刷新 100 次,就能够产生不错的泄漏。不过,我认为这不是问题所在,刷新后清除了所用内存。

我们现在将尝试自动刷新。

最佳答案

setInterval() 应该永远持续下去。但是,您的脚本/页面可能会泄漏某种资源,最终导致您的页面脚本或浏览器内部出现错误。

如果是这种情况,您可能最终可以追踪到泄漏的资源类型并解决真正的问题,但即使这样做,一些浏览器也会遇到运行时间很长的进程的问题。

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

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

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

不仅会给你一个干净的开始,而且还会自动让你的应用程序每隔一段时间自动检索你可能对应用程序所做的任何服务器端更改,所以如果你发布错误修复,它将自动部署几个小时内。

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

关于c# - 运行 JavaScript setInterval 的网站在 ~1 天后开始失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13236592/

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