【问题标题】:Manage image changes on server with SDWebImage IOS使用 SDWebImage IOS 管理服务器上的图像更改
【发布时间】:2012-10-28 12:49:47
【问题描述】:

我喜欢这个类似的question,但它太旧了。

我正在使用 SDWebImage 库从远程服务器下载图像。

远程图像可能会更改(但保持相同的名称),因此我必须在使用缓存的图像之前检查远程图像是否已更改。

我该怎么做?

提前致谢 (抱歉英语不好)

【问题讨论】:

    标签: iphone objective-c ios caching sdwebimage


    【解决方案1】:

    我今晚只是在做这项非常研究,并且基于 SDWebImage 的当前实现,看起来没有“内置”方式使用条件 GET(etag 或日期)类型请求到服务器进行检查更新。

    我现在正在探索的方法是创建一个唯一的 URL,以便在图像的服务器版本更新时,将哈希或版本附加到末尾。比如:

    http://example.com/myimage.png?v=2

    并随着图像的变化增加版本号,但保持 myimage.png 名称相同,因为它不会改变。这应该会强制 SDWebImage 下载新图像并为新版本的图像构建新缓存。

    否则,您必须调整 SDImageCache.m 中的常量值 cacheMaxCacheAge 以比默认值 1 周更频繁地检查。

    【讨论】:

      【解决方案2】:

      我是这样做的:

      [SDWebImage sd_setImageWithURL:[NSURL URLWithString:strURL] placeholderImage:[UIImage imageNamed:@"placeholder.png"] options:SDWebImageRefreshCached];
      

      /** * 即使图像被缓存,也要尊重 HTTP 响应缓存控制,并在需要时从远程位置刷新图像。 * 磁盘缓存将由 NSURLCache 而不是 SDWebImage 处理,导致性能略有下降。 * 此选项有助于处理在同一请求 URL 后面更改的图像,例如Facebook 图形 api 个人资料图片。 * 如果缓存的图像被刷新,完成块被缓存的图像调用一次,最终的图像被调用一次。 * * 仅当您无法使用嵌入的缓存破坏参数使您的 URL 成为静态时才使用此标志。 */

      【讨论】:

        猜你喜欢
        • 2015-04-19
        • 2014-08-05
        • 2016-05-29
        • 2014-04-16
        • 1970-01-01
        • 2011-08-28
        • 1970-01-01
        • 2019-05-09
        • 1970-01-01
        相关资源
        最近更新 更多