2012-04-13 45 views
0

我们的PHP/MVC webapp可让用户上传图片。他们得到每个图像的链接,如:http://example.com/images/55其中55是我们在数据库中存储的id,因此我们可以将用户与他们的图片关联起来。我们不是将图像数据存储在数据库中,而是实际存储在Amazon S3上。CDN缓存图像重定向和固定链接

当用户稍后请求此URL时,我们的服务器会生成实际的URL,并向浏览器发出header('Location: https://s3.amazonaws.com/example/media/1234')重定向,其中1234的ID为55混淆。我们设置了这个方案,所以我们可以有一个'永久链接'的解决方案,以防后端发生变化 - 原始URL只是被重新映射到后台。

有了这个方案,是否有可能让客户端浏览器缓存整个过程?例如,请求http://example.com/images/55将避免直接访问我们的服务器,并直接请求https://s3.amazonaws.com/example/media/1234,或者甚至更好,直接从缓存中检索此图像。如果没有,那么构建我们的链接/重定向方案的“最佳”方式是什么?我们将制作带有许多缩略图的页面,我希望这些页面可以缓存,这样用户体验很流畅。

+0

发送头重定向到CDN有什么意义?你仍然直接击中你的服务器?! – konsolenfreddy 2012-04-13 18:01:55

+0

是的,但我们不提供图像内容,只是图像位置。 – Harper 2012-04-13 18:02:20

+0

这当然是真的,但是您的整个PHP过程将由此开始。 – konsolenfreddy 2012-04-13 18:03:36

回答

1

以我的经验,您的请求正是发生了什么。浏览器,在我的Mac上的Safari浏览器的情况下5,打脚本URL,重定向到CDN和原始脚本URL下缓存图像...

我注意到这一点,因为我需要相反。同样的情况,但在我的情况下用户想改变他们的图片。上传进行得很好,但浏览器不断显示旧图像...(在继续你的路径之前考虑这一点)

+0

谢谢。在我的情况下,我实际上希望将图像缓存为“永久” - 但作为替代,我可以通过在查询字符串中追加缓存破解程序(例如时间戳)来允许更改图像,即url?t = 13372034788 – Harper 2012-06-06 06:15:10