我们有一个基于网络的闭路电视系统——每台摄像机实际上就像一个网络服务器,您只需浏览到一个 URL 即可查看摄像机的图像。
我编写了一个简单的 HTML 页面,将每个相机的图像“聚合”到一个页面上。我每隔几秒钟使用 javascript 将一个随机查询字符串值附加到每个图像 URL 上,从而强制刷新图像。URL 可能如下所示:
http://192.168.50.100/camera1/current.jpg?rand=324923
从内部网络查看此 HTML 页面时,一切正常。
现在,我还在我们的 DMZ 上创建了页面的“外部”版本,因此管理人员可以在场外查看 CCTV。除了图像 URL 之外,HTML 与“内部”页面相同,如下所示:-
http://foo.com:1234/camera1/current.jpg?rand=...
每个摄像头都有不同的端口号,所以我假设 IT 人员正在使用某种端口转发。当您查看此页面时,最初会显示摄像机图像,但不会刷新。在某些情况下,它会显示几秒钟甚至几分钟前捕获的图像。使用 Chrome 的 F12 功能,我可以看到图像 URL 中的随机数发生变化,所以我知道 javascript 正在工作。
知道为什么这个外部页面不刷新吗?似乎有些东西正在提供缓存的图像,而忽略了不断变化的查询字符串(整个问题应该是请求未缓存的版本)。