首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在我的网站上编辑图像后如何清除图像缓存?

在我的网站上编辑图像后如何清除图像缓存?
EN

Stack Overflow用户
提问于 2010-12-21 08:34:00
回答 3查看 8.6K关注 0票数 8

我正在使用外部页面更新我系统中的图像。当我被重定向回我工作过的页面时,我仍然可以看到老照片。在我按下ctrl+f5之前,我看不到我的更改。他们有什么方法可以通过删除历史记录或其他解决方案来重定向吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-21 08:40:33

将查询字符串添加到您的图像源,这将阻止浏览器缓存它。有些人使用日期,我更喜欢GUID

代码语言:javascript
复制
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;

它最终会让你的图像源看起来像这样:

代码语言:javascript
复制
 <img src="/path/to/image.jpg?r=Vqad3W8ZUG6oXgFzZIw" id="Image1" runat="server" />
票数 13
EN

Stack Overflow用户

发布于 2010-12-21 08:41:18

是否刷新取决于浏览器。解决此问题的标准技术是在图像中添加时间戳。例如:

代码语言:javascript
复制
<img src='/images/foo.jpg?ts=1'/>

当您更新镜像时,发回:

代码语言:javascript
复制
<img src='/images/foo.jpg?ts=2'/>

浏览器将看到两个不同的URL,并再次请求图像。您可以使用时间戳(文件的上次修改时间)、文件内容的散列、递增整数...任何更改URL并强制浏览器重新加载的操作。

注意:在提供静态文件时,web服务器将忽略查询字符串。所以你不需要运行任何代码来实现这一点。此技术也适用于您想要强制刷新的任何内容,包括CSS、JS等。

票数 2
EN

Stack Overflow用户

发布于 2018-02-10 05:07:01

在C#中有一种简单得多的方法。您将位图图像CreateOptions设置为BitmapCreateOptions.IgnoreImageCache,它会强制图像从文件加载,而不是使用现有缓存。

代码语言:javascript
复制
        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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4495316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档