2013-06-18 122 views
1

让我来解释一下这个需求。我有一个页面,用户可以上传他的个人资料图片,如果他需要改变它。在提交该表格时,我想让他看看他的个人资料页面。如何更新,强制忽略缓存的数据

但问题是这样的,他的两个老轮廓影像,其被上传的同名&相同的扩展名(这是必需的存储&他的新轮廓影像,我不能改变别人这个我不会必须有问题,如果我有改变了新图像的名称)

因此,当他被重定向到他的个人资料页面时,除非用户点击Ctrl + F5,否则仍会显示旧图像。那么有什么方法可以解决这个问题吗?

P.S:我知道img src方法的abt随机查询字符串。但我不想要,因为它会始终从服务器获取图像。我只想让浏览器不要只在这个特定的请求上缓存图像(例如,在图像上传后重定向的函数中设置状态头)。我正在使用Codeigniter,PHP

回答

0

尝试$this->output->set_header();的图像。

From the docs:你手动设置服务器头,其输出类会为你输出最终呈现的显示时发送

许可证。

$this->output->set_header('Last-Modified: '.gmdate('D, d M Y H:i:s', $last_update).' GMT'); 
$this->output->set_header("Cache-Control: no-store, no-cache, must-revalidate"); 
$this->output->set_header("Cache-Control: post-check=0, pre-check=0"); 
+0

我已经有这样的代码在我的构造 '$这个 - > set_header( '过期:星期六,1997年7月26日05:00:00 GMT');'' $这个 - > set_header('Cache-Control:no-cache,no-store,must-revalidate,max-age = 0');'$ this-> set_header('Cache-Control:post-check = 0,pre-check = 0',FALSE);' '$ this-> set_header('Pragma:no-cache');' –

+0

您需要发送这些图片的标题,而不是您的页面。从浏览器中请求图像,并且图像的“缓存控制”与该页面的任何一个没有关系。 – ferdynator

+0

我还没有使用$ this-> output,因为这段代码在我的MY_Output类:) –