我猜你是通过指向 http(s)://graph.facebook.com/userid/picture 来加载图像?
嗯,Facebook 提供这些带有缓存标头的 URL,如下所示,
Cache-Control: private, no-cache, no-store, must-revalidate
Expires: Sat, 01 Jan 2000 00:00:00 GMT
Pragma: no-cache
这些是用于 Graph API 重定向 URL - Facebook 在这里禁止缓存,因此浏览器每次都必须再次查找这些资源。他们 CDN 上的最终图像 URL,这些 URL 使用 Location 标头重定向到该 URL - 那些具有以下有关缓存的标头,
Last-Modified: Fri, 01 Jan 2010 00:00:00 GMT
Cache-Control: max-age=1209600
Expires: Thu, 13 Sep 2012 08:07:52 GMT
所以您可以尝试在您的应用中预先要求 CDN URL,然后在您的应用的 HTML 页面中使用这些作为图像 URL - 这样浏览器就不必每次都发出请求查看图片 URL 的缓存版本是否仍然有效,但可以立即从缓存中提供它。
CDN URL不应该在更长的时间内使用——它们可以改变;但是在较短的时间内使用它们可能是安全的,因为它们不会在没有充分理由的情况下随意改变。 F.e.,用户更改他们的个人资料图片可能是这样的原因 - 但是将它们缓存长达一个小时左右可能是一种折衷方案,可以在使用您的应用程序时改善用户体验。
但这样做的缺点是,您的应用最初必须为每个朋友的图片发出 API 请求,以获取 CDN 个人资料图片 URL – 这也很耗时,如果您为大量朋友这样做。 (尽管批处理请求或 FQL 多查询可能能够将其缩短为 一个 HTTP 请求,而不是多个。)