首页 > 解决方案 > 用 B 替换服务器上的文件 A,但显示文件 A

问题描述

在删除图像并保存另一个同名文件(即文件被替换)的情况下,我遇到了问题。如下所示:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult _ReplaceGeneral(int ID, HttpPostedFileBase file)
{
     var dbpath = query.FindImages(ID);
     var path = Server.MapPath(dbpath.ImageURL);

     System.IO.File.Delete(path);
     file.SaveAs(path);

     TempData["Message"] = "Image Successfully Replaced!";

     return RedirectToAction("EditGallery");
}

在我的服务器中,文件已成功替换。但是,当我启动该站点时,会显示以前的图像。

笔记:

问题:即使在将图像 A 替换为图像 B 后,图像 A 如何以及为什么会显示在我的网站上?

我无法找到任何资源来说明此问题发生的原因和方式,因此如果重复,我深表歉意。

标签: c#asp.net-mvcentity-framework

解决方案


这听起来像是浏览器缓存问题。如果图像的 URL 没有改变,浏览器将使用缓存版本,而不是从服务器获取图像。

您可以通过获取图像文件的最后修改日期/时间将其转换为数字并将其作为查询字符串添加到图像 URL(例如 &t=XXXXX)来解决此问题。这样,当图像文件更改时,URL 也会更改。然后浏览器将加载新图像。


推荐阅读