0

我有一个带有文本输入的表单,允许用户插入图像的 URL 并提交表单以将图像上传到服务器。所以图像被转换为​​PNG,用哈希重命名并保存在服务器目录上images/ 这就是要上传的代码:

   if (isset($_POST["cover"])) {
        imagepng(imagecreatefromstring(file_get_contents($_POST["cover"])), "images/".$hash.".png");
   }

没问题,问题是当用户尝试从新 URL 更新图像时。

更新图像的表单value在服务器上具有实际转换和散列图像的输入。如果用户修改输入 URL 并提交更新表单,它将覆盖服务器上的图像。

现在我有缓存问题。如何在提交表单后显示更新的图像而无需清理浏览器缓存?

详情页:index.php?page=details

用户点击更新,更新页面被加载index.php?page=edit

用户提交表单并保存插入的数据并加载回index.php?page=details显示相关图像的详细信息。

4

1 回答 1

0

只需附加?<?=time()?>src属性的末尾,它就会生成一个时间戳,希望能让浏览器再次请求图像并忽略缓存。

您也可以查看 .htaccess,定义一个 FilesMatch 指令,该指令发送标头以强制浏览器完全不缓存。

<FilesMatch "\.(png|jpg)$">
    FileETag None
    <IfModule mod_headers.c>
         Header unset ETag
         Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
         Header set Pragma "no-cache"
         Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
    </IfModule>
</FilesMatch>

我希望答案是有帮助的。

于 2013-06-27T01:35:06.670 回答