我正在使用外部页面来更新系统中的图像。当我被重定向回到我曾经工作的页面时,我仍然看到旧图片。在按ctrl + f5之前,我没有看到我的更改。他们以任何方式重定向历史记录删除或任何其他解决方案吗?
答案 0 :(得分:11)
向图像源添加查询字符串,它将阻止浏览器缓存它。有些人使用日期,我更喜欢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" />
答案 1 :(得分:2)
刷新与否的决定取决于浏览器。解决此问题的标准技术是为图像添加时间戳。例如:
<img src='/images/foo.jpg?ts=1'/>
更新图像时,请发回:
<img src='/images/foo.jpg?ts=2'/>
浏览器将看到两个不同的URL并再次请求图像。您可以使用时间戳(文件的上次修改时间),文件内容的哈希值,递增的整数,...任何更改URL并强制浏览器重新加载的内容。
N.B。提供静态文件时,Web服务器将忽略查询字符串。因此,您不需要运行任何代码来实现此功能。此技术也适用于您希望强制刷新的任何内容,包括CSS,JS,......
答案 2 :(得分:0)
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;