AJAX不想缓存图像

时间:2012-07-07 09:50:11

标签: php c++ ajax caching

我有一个Web表单,它接受C ++代码,在服务器上编译它,然后吐出输出。有问题的C ++代码写出可以在网页上查看的BMP文件。这是通过AJAX接口的。我的主要问题是每当我重新编译程序以更改图像时,除非我刷新页面,否则相关图像不会改变。因此我认为这是一个缓存问题。以下是步骤:

  1. 人输入C ++代码
  2. 人员按提交
  3. 将C ++代码发送到compile.php
  4. compile.php编译程序并显示目录中的所有图像
  5. 如果某人更改了程序中图像的颜色并重新提交表单,则提交成功,但除非刷新页面,否则图像不会更改。我在更改输出文件名时验证了这一点并创建了一个具有正确颜色的新图像,但如果您使用相同的文件名重新编译该程序,则除非您刷新页面,否则该特定图像不会更改。

    我尝试将无缓存标头放在PHP文件的顶部。

    <?php
    header("Expires: Mon, 26 Jul 1990 05:00:00 GMT");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");
    ?>
    

1 个答案:

答案 0 :(得分:1)

要解决此问题,您可以尝试在发出AJAX请求时禁用Javascript库中的缓存。对于JQuery,请将cache设置为false

另一种解决方案是在发出请求时手动附加缓存清除参数。例如,不是向compile.php发出AJAX请求,而是向compile.php?123456发出请求,其中123456是当前时间戳。这应该强制浏览器不使用缓存副本。