【发布时间】:2017-04-21 10:13:59
【问题描述】:
我的情况(很简单)如下:
- 在单个页面中,我有 n 个 ipcam 对象。每个 ipcam 对象都有自己的 div ,每次收到上一张图像时都会更新 ipcam 的图像。
- 一个 javascript 函数调用一个 php 文件(将 ipcam 的 id 作为参数传递),该文件通过套接字请求返回图像(在选择该特定 id [ip、端口、身份验证、用户名、密码等的设置后] )。
Javascript 代码(简体)
//called by a timer
function refresh_ipcam(id){
if(parseInt($("#"+id).attr('refresh_finished')) == 1){
$("#"+id).attr('refresh_finished',0);
var img = new Image(....);
var x = new Date().getTime();
img.src = "get_image.php?id="+id+"&random="+x;
img.onload = function(){
$("#"+id).html(img);
$("#"+id).attr('refresh_finished',1);
}
img.onerror = function(e){
setTimeout(function(e){
$("#"+id).attr('refresh_finished',1);
},2000)
}
}
}
通过添加随机参数,浏览器总是会检测到新图像。通过这种方式,我解决了一个问题(图像未针对缓存问题正确更新)。但是我认为这种方式存在另一种问题,因为请求的数量很大。
一些用户报告了浏览器的阻塞(一段时间后)。这可能是与完整缓存有关的问题吗?
在 google chrome 控制台的 Application > Frames > Images 部分,我注意到每个请求 (get_image.php) 都匹配此列表中的一个新元素。
【问题讨论】:
标签: browser-cache