【发布时间】:2013-05-15 13:36:03
【问题描述】:
我正在尝试使用 GET 请求从服务器检索图像。图像在不断变化,所以我想每秒抓取几次图像(目的是显示图像并最终模仿视频)。但是,GET 请求出了点问题。无论我尝试获取图像的速度有多快(每 1 秒、100 毫秒等尝试一次),它只会每 5 秒返回一个新图像。就好像某处有一个缓存图像,它只每 5 秒更新一次缓存,其他时间返回旧的、重复的图像。
我已执行以下操作来尝试隔离问题:
- 已验证服务器端的图像实际上每 100 毫秒左右更新一次,这意味着网页确实为大部分 GET 请求返回了旧图像,
- 通过开发人员选项和在隐身模式下运行网页来关闭浏览器缓存。顺便说一下,这是 Chrome。
- 通过在配置文件中设置 maxKeepAliveRequests = 1(禁用)来关闭 Tomcat 服务器中的 keepalive。
然而它实际上仍然只是每 5 秒检索一次新图像。
Example Request Headers:
Cache-Control: no-cache
Connection: keep-alive <-- Could this be the problem?
Pragma: no-cache
Example Response Headers:
Cache-Control: no-cache
Cache-Control: no-store
Connection: close
Pragma: no-cache
Server: Apache-Coyote/1.1
我的查询(每次加载图片都会延迟一段时间后执行):
document.getElementById("videoDisplay").src = filename + "?random="+(new Date()).getTime();
【问题讨论】:
-
您是通过自己的服务返回图像吗?也许是一个 Java servlet?
-
关闭连接保持活跃。另外,你为什么不创建一个 gif 并获取 gif 呢?
-
@PatrickD,文件名是包含实际图像的文件 URL,因此不是真正的服务。然而,它要经过春天才能到达那里。
-
@idipous,我会尝试在浏览器中关闭保持活动状态。我认为这无关紧要,因为服务器已禁用保持活动状态,但绝对值得一试。为什么gif会有所不同?听起来不应该傲慢,我只是不知道什么时候使用什么图像格式以及为什么。
-
检查 chromes 网络选项卡,如果图像真的被请求并以您认为的速度显示
标签: javascript jquery html image tomcat