Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript加载图像时内存泄漏';设置超时_Javascript_Html - Fatal编程技术网

使用javascript加载图像时内存泄漏';设置超时

使用javascript加载图像时内存泄漏';设置超时,javascript,html,Javascript,Html,我建立了一种监控系统,摄像机每秒拍摄一张照片,并将此图像发送到服务器,在服务器上覆盖上一张图像。在客户端,我有一个带有settimeout的简单javascript,用于每秒加载此图像 $("img").attr("src", "http://mysite/image.jpg?randomString="+new Date().getTime()); 但这会导致内存泄漏,最终导致页面崩溃。 如何可能避免这种情况?缓存是问题所在吗?浏览器是否每秒钟缓存一个新图像,这就是内存泄漏的原因?这可能是一

我建立了一种监控系统,摄像机每秒拍摄一张照片,并将此图像发送到服务器,在服务器上覆盖上一张图像。在客户端,我有一个带有
settimeout
的简单javascript,用于每秒加载此图像

$("img").attr("src", "http://mysite/image.jpg?randomString="+new Date().getTime());
但这会导致内存泄漏,最终导致页面崩溃。 如何可能避免这种情况?缓存是问题所在吗?浏览器是否每秒钟缓存一个新图像,这就是内存泄漏的原因?

这可能是一个缓存问题,因为浏览器可能会缓存所有这些图像,因为它们每次都有新的图像名称(但不应发生崩溃)

在这种情况下,请在标头中设置这些缓存指令,并查看它是否解决了问题:

<!-- disable caching on proxy servers -->
<meta http-equiv="pragma" content="no-cache">
<!-- set expiration date to "immediately" -->
<meta http-equiv="expires" content="0">
<!-- instruct the browser to not cache the webpage -->
<meta http-equiv="cache-control" content="no-cache" />
这可能是一个缓存问题,因为浏览器可能会缓存所有这些图像,因为它们每次都有新的图像名称(但这不应导致崩溃)

在这种情况下,请在标头中设置这些缓存指令,并查看它是否解决了问题:

<!-- disable caching on proxy servers -->
<meta http-equiv="pragma" content="no-cache">
<!-- set expiration date to "immediately" -->
<meta http-equiv="expires" content="0">
<!-- instruct the browser to not cache the webpage -->
<meta http-equiv="cache-control" content="no-cache" />


由于您每次都有不同的“imagename”,浏览器当然会尝试缓存它。所谓崩溃,是指浏览器本身实际上崩溃了吗?在网页上绝对不能做任何会导致浏览器崩溃的事情。如果有,那就是浏览器错误。你能发布更多的javascript代码吗?你怎么知道,这个脚本会使页面崩溃@JordanDoyle实际上在许多(大多数)情况下,最好在回调函数中“递归”调用
setTimeout
,而不是调用
setInterval
setInterval
在最小化选项卡时不起作用,并且不能保证回调之间的最短时间。由于每次都有不同的“imagename”,浏览器当然会尝试缓存它。崩溃是指浏览器本身实际崩溃吗?在网页上绝对不能做任何会导致浏览器崩溃的事情。如果有,那就是浏览器错误。你能发布更多的javascript代码吗?你怎么知道,这个脚本会使页面崩溃@JordanDoyle实际上在许多(大多数)情况下,最好在回调函数中“递归”调用
setTimeout
,而不是调用
setInterval
setInterval
在最小化选项卡时不起作用,并且不能保证回调之间的最短时间。填充浏览器缓存不会导致崩溃或任何内存问题。此外,据我所知,在HTML页面上设置这些值会影响该页面的缓存,但对该页面加载的图像却无能为力。@jcsanyi你能证明这一点吗?你应该让OP决定这是否有帮助。在任何情况下,这都是一个有效的答案。而且,“据我所知”并不是很有说服力。@ JCSANI本身浏览器缓存页面上的所有元素,它可能考虑有用的缓存,也可以是图像。这些是指示不缓存的官方标记-是否忽略或遵守它们取决于浏览器。(事实上,一些浏览器只是忽略了这些元标记)向上投票使您达到0。这在某些情况下会有所帮助,因为图像只显示一次,而且不应该有任何副本,所以浏览器不应该缓存它们。填充浏览器缓存不会导致崩溃或任何内存问题。此外,据我所知,在HTML页面上设置这些值会影响该页面的缓存,但对该页面加载的图像却无能为力。@jcsanyi你能证明这一点吗?你应该让OP决定这是否有帮助。在任何情况下,这都是一个有效的答案。而且,“据我所知”并不是很有说服力。@ JCSANI本身浏览器缓存页面上的所有元素,它可能考虑有用的缓存,也可以是图像。这些是指示不缓存的官方标记-是否忽略或遵守它们取决于浏览器。(事实上,一些浏览器只是忽略了这些元标记)向上投票使您达到0。这在某些情况下会有所帮助,因为图像只显示一次,并且不应该有任何重复,所以浏览器无论如何都不应该缓存它们。