0

我正在使用自定义 php 脚本和 GD 库基于 POST 中的一些默认值和参数呈现自定义图像。

我正在尝试构建一个自定义表单以允许用户选择这些参数,然后发送 AJAX 请求以呈现图像并将其发送回并在页面中加载预览。

问题是第一个预览有效,但之后我无法加载更多预览。我只是在预览窗口中看到相同的图像。但是,我正在将图像写入磁盘并且更新得很好,所以我认为这是一些 apache 或浏览器缓存。这是一些代码:

AJAX 请求就像

preview = new Image;
preview.src = url;
$(preview).load(preview.src, imagedata, function() {                                               
   $('#gaga-preview-space').html(this);                                                             
});

其中 imagedata 是一个带有 bgcolor 等的数组。我还为每个请求生成一个时间戳,希望它能够阻止 apache 缓存响应。这在其他情况下也有效,但不是这个。

php 生成脚本如下所示:

// Save file
$file = "/var/www/tribegaga/sites/all/files/gaga_customization/test.png";
$result = imagepng($image, $file);

// Spit out file
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");
header("Content-Type: image/png");
imagepng($image);

imagedestroy($image);

你会看到我发送了一些标题,但这些也不是问题。

也许我认为它正在缓存,所以我走错了路。但正如我所提到的,生成的 .png 效果很好。

更新:好的,问题是浏览器没有发布获取图像,而是获取,所以现在我的脚本发送了一个 GET 字符串,这一切都很好。但我宁愿没有图像 src= http://site/script.php?string=params&test=foo等。

如果大家有任何建议,我将不胜感激。

谢谢!!

4

1 回答 1

2

您也可以尝试设置 Expires(到过去的日期)和 Last-Modified(到当前的日期/时间)标题。

于 2009-05-15T19:45:45.890 回答