我遇到了最棘手的问题。我有一个脚本,用于删除/更新显示的图像文件。
问题是,它们被删除并被替换(当我检查特定目录时),但是在该特定网址上显示的图像仍然是旧的。
即我删除旧文件(1.jpg,它是灰色的)后,这就是目录的样子:
但是,网址仍然显示1.jpg作为旧的灰色img,即
现在,你可能会认为我正在查找错误的网址并添加/删除另一个文件,但为了确认,我在同一目录中添加了一个foo.html文件并用foo.html替换了1.jpg确认我在正确的目录中,我是。
我的编辑替换文件的脚本是:
if(!empty($_FILES["pic".$ite]["name"])){
if($id){
unlink($path."$ite.jpg");
}
$ext = pathinfo($_FILES['pic'.$ite]['name'], PATHINFO_EXTENSION);
$config["file_name"]="$ite.jpg";
$this->transfer.="$ite.$ext";
$this->upload->initialize($config);
if(!$this->upload->do_upload("pic".$ite)){
$this->transfer.=lang('msg_errorimage').' '.$ite;
}
}
我刚刚将文件夹从“3”重命名为“3a”,然后打开图像链接并出现404错误,然后将文件夹的名称从“3a”更改回“3”,现在正确图像正在显示。
答案 0 :(得分:5)
在尝试加载图像时,在文件扩展名后放置一些参数,
例如1.jpg?t = <?=time()?>
因为有时浏览器会缓存数据,所以如果你加载同名文件的话
它将加载缓存而不是真实文件。
即使在js文件中,如果你改变你的js文件中的某些代码行,有时也会这样 如果您的更改未生效,则需要强制刷新缓存 要查看更改,可以使用ctrl + F5,也可以只在文件扩展名后放置参数
例如:jsfile.js?t = <?=time()?>
答案 1 :(得分:3)
选项1:清除缓存(CTRL + F5强制从服务器加载页面), 选项2:如果可能,请选择唯一的文件名。
请注意,选项1将导致整个页面从服务器重新加载,而选项2将仅加载新图像。
答案 2 :(得分:2)
如果您要从该页面中删除缓存,则需要将其包含在页面顶部: -
$this->output->set_header("Expires: Tue, 01 Jan 2000 00:00:00 GMT");
$this->output->set_header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
$this->output->set_header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
$this->output->set_header("Cache-Control: post-check=0, pre-check=0", false);
$this->output->set_header("Pragma: no-cache");