0

简短:我是新手,但我尽量直接问,但请尽量原谅我;)

我一直在寻找解决我的问题的方法和两个主题:

  1. 防止浏览器缓存 jQuery AJAX 调用结果
  2. 你能清除jquery ajax缓存吗?

靠近并展示一些出色的解决方案,不幸的是它们不适用于我的情况。

我需要使用 jQuery.ajax() 调用向 IP 摄像机发送 CGI 命令。我得到并且经常改变结果。所以我不能让浏览器缓存结果!我知道并经常阅读有关此选项的信息(请参阅主题 1。):

$(document).ready(function() {
  $.ajaxSetup({ cache: false });
});

但这在我的情况下不起作用,因为相机 CGI 命令结构不适用于附加到命令的时间戳。因此,我将得到一个错误,而不是得到我需要的答案。

之后我想,我可以采用 jQuery 代码来删除设置选项“缓存:false”时附加的时间戳。但是在我阅读了一些评论之后(参见主题 2):

因此,如果您使用 cache: false,jQuery 只需在 URL 中添加一个带有当前时间的附加参数。它使本地浏览器成为另一个 URL,因为它可能在本地缓存中具有,并将请求转发到服务器。而已。

所以我发现这对我也无济于事。

主题 2 的一种解决方案是在服务器响应标头中添加等于“max-age=0”的“Cache-Control”,这会关闭本地兑现。但同样,它对我来说根本不起作用,因为我无法访问或无法访问 IP 摄像机的软件。

我认为一种解决方案是停用或删除该特定调用的缓存。另一种解决方案可能是通过任何其他方式停止缓存。

那么有人知道,当我连续两次调用 ajax 事件时,如何让 Web 浏览器停止使用缓存的答案?(重新加载网站会有所帮助,但在这种情况下也是不行的)。

提前感谢所有答案,如果您需要更多信息以使我的问题更清楚,请随时提问。

问候, lihume

4

2 回答 2

0

您没有指定您使用的服务器,所以我不确定这是否适合您。

你可以做的是使用.htaccess

这应该适用于所有 Unix 类型的服务器,但您需要完全访问权限才能安装它。

<FilesMatch "\.(php|cgi|pl|htm)$">
ExpiresActive Off
Header set Cache-Control "private, no-cache, no-store, proxy-revalidate, no-transform"
Header set Pragma "no-cache"
</FilesMatch>

这是一个关于如何在 IIS 上使用 Htaccess 的线程

http://forums.iis.net/t/1151878.aspx

于 2012-04-16T20:19:28.437 回答
0

尝试在每个请求中添加一个随机参数。param.cgi?cmd=getinfrared&fixme=21EC2020-3AEA-1069-A2DD-08002B30309D

为每个请求生成一个新的 GUID,这将使浏览器认为它是第一次请求新资源。CGI 软件应该忽略附加参数...

于 2012-04-16T10:54:20.827 回答