我正在使用外部页面更新我系统中的图像。当我被重定向回我工作过的页面时,我仍然可以看到老照片。在我按下ctrl+f5之前,我看不到我的更改。他们有什么方法可以通过删除历史记录或其他解决方案来重定向吗?
发布于 2010-12-21 08:40:33
将查询字符串添加到您的图像源,这将阻止浏览器缓存它。有些人使用日期,我更喜欢GUID
Guid g = Guid.NewGuid();
string GuidString = Convert.ToBase64String(g.ToByteArray());
GuidString = GuidString.Replace("=", "");
GuidString = GuidString.Replace("+", "");
Image1.ImageUrl = "/path/to/new/image.jpg?r=" + GuidString;它最终会让你的图像源看起来像这样:
<img src="/path/to/image.jpg?r=Vqad3W8ZUG6oXgFzZIw" id="Image1" runat="server" />发布于 2010-12-21 08:41:18
是否刷新取决于浏览器。解决此问题的标准技术是在图像中添加时间戳。例如:
<img src='/images/foo.jpg?ts=1'/>当您更新镜像时,发回:
<img src='/images/foo.jpg?ts=2'/>浏览器将看到两个不同的URL,并再次请求图像。您可以使用时间戳(文件的上次修改时间)、文件内容的散列、递增整数...任何更改URL并强制浏览器重新加载的操作。
注意:在提供静态文件时,web服务器将忽略查询字符串。所以你不需要运行任何代码来实现这一点。此技术也适用于您想要强制刷新的任何内容,包括CSS、JS等。
发布于 2018-02-10 05:07:01
在C#中有一种简单得多的方法。您将位图图像CreateOptions设置为BitmapCreateOptions.IgnoreImageCache,它会强制图像从文件加载,而不是使用现有缓存。
var bi = new BitmapImage();
StorageFile file = await StorageFile.GetFileFromPathAsync(filepath);
const uint requestedSize = 400;
const ThumbnailMode thumbnailMode = ThumbnailMode.PicturesView;
const ThumbnailOptions thumbnailOptions = ThumbnailOptions.ResizeThumbnail;
StorageItemThumbnail thumbnail = await file.GetThumbnailAsync(thumbnailMode, requestedSize, thumbnailOptions);
bi.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
bi.DecodePixelHeight = 200;
bi.DecodePixelWidth = 200;
bi.SetSource(thumbnail);
return bi;https://stackoverflow.com/questions/4495316
复制相似问题