【问题标题】:Can we cache the Facebook friend images in Chrome?我们可以在 Chrome 中缓存 Facebook 朋友的图像吗?
【发布时间】:2012-08-24 20:12:05
【问题描述】:

我们正在开发一个 chrome 扩展,其中我们有 FB 好友导入功能。 现在,每当加载扩展程序时,它都会显示所有 FB 好友图像,因此从 FB 加载这些图像需要时间。我们希望最小化图像加载时间。 有什么办法可以做到这一点?我们可以将图像缓存到 chrome 缓存并在第二次加载时从缓存中读取它们吗?

我也不认为这是相同的解决方案。 但想检查有没有办法实现这一点?

谢谢。

【问题讨论】:

  • 让 chrome 自己决定缓存什么以及如何缓存,这是最好的策略。
  • 我也这么认为..但是缓存需要很多时间..

标签: facebook image google-chrome caching browser-cache


【解决方案1】:

我猜你是通过指向 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 请求,而不是多个。)

【讨论】:

  • 这将是我们可以使用 CDN 的 webapps 的情况,但我们正在开发 chrome 扩展,那么我们如何将 CDN 用于扩展?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多