【问题标题】:HTTP static resources caching forever stategyHTTP静态资源缓存永远策略
【发布时间】:2014-06-09 01:53:25
【问题描述】:

Effective Android HTTPJesse Wilson 中提到了以下内容:

提供图片等静态资源? 使用永久 URL 并让它永久缓存

我正在使用 Picasso 和特定的 OkHttp 实例来获取和缓存图像。我想知道如何设置let it cache forever 策略?

我只能考虑用尽可能高的值覆盖 HTTP 缓存控制标头 max-stale (Cache-Control: max-stale=),还有其他(更好的)方法吗?

【问题讨论】:

    标签: android http picasso okhttp http-caching


    【解决方案1】:

    最好的方法是将您的服务器配置为包含较长的 max-age。例如,使用此标头指定 365 天:

    Cache-Control: max-age=31536000
    

    如果你想在客户端开启无限缓存,可以使用 long max-stale:

    Cache-Control: max-stale=31536000
    

    【讨论】:

    • 是否有理由认为这比长“过期”更好?
    • 它是 RFC 7234(HTTP 缓存规范)的首选。 “如果响应包含带有 max-age 指令的 Cache-Control 字段(第 5.2.2.8 节),则接收者必须忽略 Expires 字段。”