jQuery Ajax Call - 删除缓存的值

时间:2012-04-15 20:15:30

标签: jquery cache-control

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

我正在寻找解决问题的方法一段时间和两个主题:

  1. Prevent browser caching of jQuery AJAX call result
  2. Can you clear jquery ajax cache?
  3. 接近并展示一些很棒的解决方案,不幸的是它们不符合我的情况。

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

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

    但是这在我的情况下不起作用,因为相机CGI命令结构不能与附加到命令的时间戳一起使用。因此,我没有得到我需要的答案,而是会收到错误。

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

      

    因此,如果你使用cache:false,jQuery只需添加一个额外的参数   使用当前时间到URL。它为本地浏览器提供了URL   另一个,因为它可能在本地缓存中,并转发   请求到服务器。没什么。

    所以我发现这对我没有帮助。

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

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

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

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

    的问候, lihume

2 个答案:

答案 0 :(得分:0)

尝试为每个请求添加随机参数。 param.cgi CMD = getinfrared&安培; FIXME = 21EC2020-3AEA-1069-A2DD-08002B30309D

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

答案 1 :(得分: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