Pez*_*Pez 15 caching amazon-s3 amazon-web-services amazon-cloudfront liipimaginebundle
我正在通过LIIPImagineBundle为Symfony2使用Imagine来创建存储在S3中的图像的缓存版本.
缓存的图像存储在CloudFront提供的支持S3 Web的存储桶中.但是,S3的默认LIIPImagineBundle实现对我来说太慢了(检查S3上的文件是否存在然后创建到缓存文件或解析功能的URL),所以我已经计算出了我自己的工作流程:
只要我不使用cloudfront,这工作正常.问题似乎是cloudfront正在缓存302重定向响应(即使http规范声明它们不应该).因此,如果我使用cloudfront,则客户端将在无限重定向循环中从Web服务器到云端来回发送,并且即使在生成文件之后,对文件的每个后续请求仍会重定向到Web服务器.
如果我直接使用S3而不是cloudfront,则没有问题,这个解决方案是可靠的.
根据亚马逊的文档 S3重定向规则不允许我指定自定义标头(设置缓存控制标头等),我不相信CloudFront允许我控制重定向的缓存(如果它们做得很好)隐).CloudFront的失效选项是如此有限,以至于我认为它们不会起作用(任何时候都只能使3个对象失效)...我可以在第一次重定向(来自Imagine webserver)上将参数传递回cloudfront来修复无穷无尽的重定向(例如image.jpg?1),但是对同一对象的后续请求仍然是302到网络服务器然后301返回到云端,即使它存在.我觉得应该有一个优雅的解决方案来解决这个问题,但它让我望而却步.任何帮助,将不胜感激!!
Sco*_*rth 17
我通过在CloudFront"缓存行为"设置中设置"默认TTL"来解决同样的问题0
,但仍然允许通过CacheControl
在S3文件上设置MetaData 来缓存我调整大小的图像max-age=12313213
.
这样重定向将不会被缓存(默认TTL行为),但我调整大小的图像将是(缓存命中的CacheControl max-age).
小智 1
如果你真的需要在这里使用CloudFront,我唯一能想到的是你不要\xe2\x80\x99t直接让用户接受302、301舞蹈。您能否向前端 S3 介绍某种代理脚本/页面以及整个过程?(或者这是否会破坏要点)。
\n\n所以缓存未命中看起来像这样:
\n\n 归档时间: |
|
查看次数: |
3811 次 |
最近记录: |