1

我已经被这个问题困扰了几个星期,并将尝试在下面给出一个简短而详细的解释:

情况

访问网站的用户可以选择使用GD-library生成图像。所以每个用户都生成了个人形象。很简单……直到现在。生成图像后,用户可以选择将此图像分享到 Facebook。这是通过 OpenGraph 协议完成的。

什么工作(是的!)

生成图像工作得很好。向 Facebook 分享内容也很有效。

问题

尽管以下代码用于共享图像 ( fbrefresh=CAN_BE_ANYTHING)。FB 剧照拉出一张旧图。有时这是一个非常旧的图像,有时它是一个更新的图像。但绝不是刚刚生成的图像。

现在?

如前所述,我已经尝试过fbrefresh=CAN_BE_ANYTHING. 同样在调试工具中没有显示正确的图像,但这可能是因为生成的图像具有从用户 cookie 生成的唯一 ID。所以这个id只有在用户点击生成并分享生成的图像时才可用。

互联网上有没有使用相同策略并且有效的示例?我已经搜索了一半的互联网并没有找到它,但它变得越来越令人沮丧。

4

1 回答 1

1

生成图像后,用户可以选择将此图像分享到 Facebook。这是通过 OpenGraph 协议完成的。

你说的后者到底是什么意思?您只是将该图像上传到用户的墙/他们的一个相册,还是发布一个带有用户生成的照片的 Open Graph 对象?(顺便说一句,用户生成的照片字面意思是 OG 动作——你应该只使用用户在执行动作时使用他们的手机相机拍摄的照片。我怀疑 GDlib 生成的图像是否适合那个描述。)

尽管以下代码用于共享图像 (fbrefresh=CAN_BE_ANYTHING)。FB 剧照拉出一张旧图。

你所说的“拉”到底是什么意思?您是否将照片作为 HTTP POST 上传上传,是否通过 URL 上传,是否将其指定为 og:image 用于 OG 对象,还是在发布操作时将其作为用户生成的照片传递?


现在,对于请求客户端正确刷新 URL 引用的资源,通常最简单的方法是将不同的值附加到查询字符串/作为 GET 参数 - fe 当前的 unix 时间戳:…/image.php?1984372634…/image.php?foo=bar&forcerefresh=1984372634

由于这个值每秒都在变化,它使这些 URL 中的每一个都成为不同的URL,并且请求客户端绝对别无选择,只能请求该资源,因为他已经无法在其缓存中拥有它。

于 2013-01-09T15:55:00.040 回答