Html 将随机查询字符串值附加到图像URL不会刷新它

Html 将随机查询字符串值附加到图像URL不会刷新它,html,caching,iis-7,webserver,Html,Caching,Iis 7,Webserver,我们有一个基于网络的闭路电视系统——每个摄像头都像一个网络服务器,你只需浏览一个URL就能看到摄像头的图像 我编写了一个简单的HTML页面,将每个摄像头的图像聚合到一个页面上。我使用javascript每隔几秒钟向每个图像URL追加一个随机查询字符串值,强制图像刷新。URL可能如下所示: http://192.168.50.100/camera1/current.jpg?rand=324923 从内部网络查看此HTML页面时,一切正常 现在,我还在我们的非军事区创建了一个外部版本的页面,这样经理

我们有一个基于网络的闭路电视系统——每个摄像头都像一个网络服务器,你只需浏览一个URL就能看到摄像头的图像

我编写了一个简单的HTML页面,将每个摄像头的图像聚合到一个页面上。我使用javascript每隔几秒钟向每个图像URL追加一个随机查询字符串值,强制图像刷新。URL可能如下所示:

http://192.168.50.100/camera1/current.jpg?rand=324923

从内部网络查看此HTML页面时,一切正常

现在,我还在我们的非军事区创建了一个外部版本的页面,这样经理们可以在场外观看闭路电视。HTML与内部页面相同,但图像URL除外,如下所示:-

http://foo.com:1234/camera1/current.jpg?rand=...

每个摄像头都有不同的端口号,所以我假设IT人员正在使用某种端口转发。查看此页面时,相机图像最初确实会显示,但不会刷新。在某些情况下,它会显示几秒钟甚至几分钟前拍摄的图像。使用Chrome的F12功能,我可以看到图像URL中随机数的变化,因此我知道javascript正在工作


知道为什么这个外部页面不刷新吗?似乎有什么东西在为缓存的图像提供服务,而忽略了不断变化的查询字符串,而整个查询字符串的要点应该是请求一个未缓存的版本。

对于客户端来说,不同的URL意味着一个完全不同的资源,因此他别无选择,只能从服务器请求它。因此,缓存问题只能发生在您的相机本身上——请求“新”图像,但没有可用的新图像数据——因此它们发送与上次请求相同的图像数据。CCTV系统以15 fps的速度捕获图像,因此始终存在新图像。我可以同时查看HTML页面的两个版本——办公电脑上的内部页面和通过wifi的外部页面。内部页面会刷新,但外部页面不会刷新,这表明外部页面所采用的网络路径上的某些内容正在缓存。好的,可能不是摄像头本身,而是DMZ中介于两者之间的内容。但如果是这种情况,那么一些组件的缓存行为违反了HTTP——正如我所说的,附加不同的查询字符串会使其成为完全不同的资源,因此不允许任何客户端从任何缓存中获取它,因为他不能缓存它,原因很简单,因为它是一个不同的“新”URL。您的DMZ机器是否有可用的日志文件,您可以在其中查看如何处理请求?