删除和替换图像文件但仍显示旧图像
Posted
技术标签:
【中文标题】删除和替换图像文件但仍显示旧图像【英文标题】:deleting and replacing image file but still showing old image 【发布时间】:2012-10-23 06:20:44 【问题描述】:我有一个脚本,用于删除/更新显示的图像文件。
问题是,它们正在被删除和替换(当我检查特定目录时),但在该特定 url 显示的图像仍然是旧的。
即我删除旧文件(1.jpg,是灰色的)后,目录是这样的:
但是,网址仍然显示 1.jpg 作为旧的灰色 img,即
现在,您可能认为我正在查找错误的 url 并添加/编辑另一个文件,但为了确认,我在同一目录中添加了一个 foo.html 文件并将 1.jpg 替换为 foo.html确认我在正确的目录中,而且我是。
我的编辑替换文件的脚本是这样的:
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”,现在正确了图片正在显示。
【问题讨论】:
你清除缓存了吗?有时它只是从缓存中获取数据。否则,检查文件位置是否有重复位置。检查页面源以获取网页中的路径 我应该清除哪个缓存?另外,我只是将文件夹从“3”重命名为“3a”,然后打开图像的链接并收到 404 错误,然后将文件夹的名称从“3a”改回“3”,现在是正确的图像正在显示。 尝试清除浏览器的缓存。 wikihow.com/Clear-Your-Browser's-Cache 【参考方案1】:尝试加载图像时在文件扩展名后放置一些参数,
例如 1.jpg?t=<?=time()?>
因为有时浏览器会缓存数据,所以如果你加载同名文件 它会加载缓存而不是真正的文件。
即使在 js 文件中,有时如果您更改 js 文件中的某些代码行,它也会 您所做的更改未生效,您需要为您强制刷新缓存 要查看更改,它可以是 ctrl+F5 或只是在文件扩展名之后放置参数
例如:jsfile.js?t=<?=time()?>
【讨论】:
【参考方案2】:选项 1:清理缓存(CTRL+F5 强制从服务器加载页面), 选项 2:如果可能,选择唯一的文件名。
请注意,选项 1 将导致整个页面从服务器重新加载,而选项 2 将仅加载新图像。
【讨论】:
【参考方案3】:如果您想从该页面中删除捕获,则需要在页面顶部包含此内容:-
$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");
【讨论】:
以上是关于删除和替换图像文件但仍显示旧图像的主要内容,如果未能解决你的问题,请参考以下文章
在 IOS swift 应用程序中重写或删除现有的 .png 文件