我们正在开发一个Chrome扩展程序,其中我们有FB好友导入功能。 现在,只要扩展加载,它就会显示所有FB好友图像,因此从FB加载这些图像需要时间。我们希望最小化图像加载时间。 有没有办法实现这个目标?我们可以将图像缓存到chrome缓存&第二次加载时从缓存中读取它们?
我也不认为这是同样的解决方案。 但想检查有没有办法实现这一目标?
感谢。
答案 0 :(得分:2)
我猜您是通过指向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
这些用于图谱API重定向网址 - Facebook禁止在此处进行缓存,因此浏览器每次都必须查找这些资源。 CDN上的最终图片网址,这些网址使用Location
标头重定向 - 那些有关于缓存的以下标题,
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网址,然后在应用的HTML网页中将其用作图片网址 - 然后浏览器就不必每次都提出请求查看图片网址的缓存版本是否仍然有效,但可以立即从其缓存中提供。
CDN网址不应在更长的时间跨度内使用 - 他们可以更改;但是在较短的时间内使用它们可能是安全的,因为它们不会在没有充分理由的情况下随意改变。也就是说,用户更改他们的个人资料图片可能是这样的原因 - 但是将他们缓存长达一个小时左右可能是一种妥协,可以让用户在更好地使用您的应用时获得体验。
但这样做的缺点是,您的应用最初必须为每个朋友的图片发出API请求,获取 CDN个人资料图片网址 - 这也很耗时,如果你为很多朋友做的话。 (尽管批处理请求或FQL多查询可能会将其缩短为一个 HTTP请求而不是多个。)