【发布时间】:2012-04-15 20:15:30
【问题描述】:
简短:我是新手,但我尽量直接问,但请尽量原谅我 ;)
我一直在寻找解决我的问题的方法和两个主题:
靠近并展示一些出色的解决方案,不幸的是它们不适用于我的情况。
我需要使用 jQuery.ajax() 调用向 IP 摄像机发送 CGI 命令。我得到并且经常改变结果。所以我不能让浏览器缓存结果!我知道并经常读到这个选项(参见主题 1。):
$(document).ready(function() {
$.ajaxSetup({ cache: false });
});
但这在我的情况下不起作用,因为相机 CGI 命令结构不适用于附加到命令的时间戳。因此,我会得到一个错误,而不是得到我需要的答案。
之后我想,我可以采用 jQuery 代码来删除设置选项“缓存:false”时附加的时间戳。但是在我阅读了一些 cmets 之后(参见主题 2。):
所以如果你使用cache: false,jQuery只需添加一个额外的参数 到具有当前时间的 URL。它使本地浏览器成为 URL 另一个,因为它可能在本地缓存中,它转发 向服务器请求。仅此而已。
所以我发现这对我也没有帮助。
主题 2 的一个解决方案是在服务器响应标头中添加等于“max-age=0”的“Cache-Control”,这会关闭本地兑现。但同样它对我来说根本不起作用,因为我无法访问或无法访问 IP 摄像机的软件。
我认为一种解决方案是停用或删除该特定调用的缓存。 另一种解决方案可能是通过任何其他方式停止缓存。
那么有没有人知道,当我连续两次调用 ajax 事件时,如何让网络浏览器停止使用缓存的答案? (重新加载网站会有所帮助,但在这种情况下也是不行的)。
提前感谢所有答案,如果您需要更多信息以使我的问题更清楚,请随时提问。
问候, 咻咻咻
【问题讨论】:
-
那么你要什么,一个网址?回应是什么?是流还是什么?目前尚不清楚为什么需要清除缓存。
-
我使用camera build in CGI命令来获取设置的状态。例如,我问“红外 LED 是打开还是关闭” - 'param.cgi?cmd=getinfrared' - 答案是一个变量:现在,当我使用另一个 CGI 命令 'param.cgi?cmd=setinfrared&-infraredstat=off' 更改它并重新打开站点时,它不会显示当前状态,因为由于缓存,我仍然会得到 IR LED 的旧结果关闭。
标签: jquery cache-control