没有缓存解决方案和图像的问题

时间:2012-03-27 17:48:54

标签: php html caching

我有一个php页面,其中包含一些用于上传图片的表单。每个表单上传一个图像。上传的图像会替换页面中已加载的图像。

这是一个片段:

<?php
// NO CACHING CODE
header("Expires: Mon, 26 Jul 1997 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");

// FORM SUBMIT CODE
if (isset($_POST['submit_img1'])) {
    // used for some photo manipulation and checks
    require_once('WideImage/WideImage.php');
    //... some code ...
    unlink("path/" . $img1);
    $img_name = "path/" . $img1;
    $wideImage->saveToFile($img_name, 80);
    // ... some code ...
}

// PRINT IMAGE IN THE PAGE
echo '<p><img src="path/' . $img1 . '" width="100" height="100" class="prof_img" /></p>';
?> 

  //FORM FOR CHANGE THE IMAGE
    <form id="form_img1" name="form_img1" method="post" onSubmit="return checkFormImg1()"
action="" enctype="multipart/form-data">
    <input class="prof_input" type="file" name="img1" id="img1" />
    <input name="submit_img1" type="submit" class="prof_submit" value="Inserisci Immagine 1"
    />
</form>

问题是在重新加载时(按下提交按钮后)会显示旧图像。但新图片已经正确上传,取代旧图片。

请原谅我的英语。

2 个答案:

答案 0 :(得分:1)

这是一个简单的小技巧,你可以用它。只需将随机字符串附加到图像文件源的末尾,就像$ _GET参数一样。

比随机字符串更好的是时间戳,因为你不会冒两次使用相同数字的风险。

在你的img标签

中使用它
src='img.jpg?rand=1234'

答案 1 :(得分:0)

您的NO CACHING CODE仅影响其调用的页面。

所以,你必须处理图像,而不是带链接的页面。