繁体   English   中英

Amazon CloudFront不需要我使对象无效

[英]Amazon CloudFront doesn't require me to invalidate objects

我有一个ruby on rails应用程序,用户可以在其中上传他们的头像或进行更改。 首先,我将图像存储在Amazon s3中,但是后来我意识到内容内容的放送速度很慢,因此决定使用Amazon cloudfront。

上传和获取头像没有问题。 但是,我可以看到更新的照片会立即更改,但我希望通过Cloudfront API使它无效。 上载图像会花费很多时间。

在这一点上,我无法确定我是否正确使用了Cloudfront。

这是我在config / initializer中的carrierwave.rb文件:

 CarrierWave.configure do |config|

  config.fog_provider = 'fog/aws'                        
  config.fog_credentials = {
    provider:              'AWS',                      
    aws_access_key_id:     'key',      
    aws_secret_access_key: 'value',    
    region:                'us-east-1'
  }

  config.storage :fog
  config.asset_host     = 'http://images.my-domain.com'
  config.fog_directory  = 'bucket_name'                          
  config.fog_public     = true
  config.fog_attributes = { cache_control: "public, max-age=315576000" }
end

我看不到我想念的东西吗? 如何确保我正确使用了Cloudfront?

谢谢。

您的图像没有存储在CloudFront中,而是通过CloudFront的CDN提供。

通过CF首次请求提供图像的请求如下所示:

Browser -> CloudFront -> S3
                          |
Browser <-  CloudFront  <-

对图像的第二个请求如下所示:

Browser -> CloudFront
                    |
Browser           <-  

第二个请求从未命中CF,因为CF已缓存该URL的结果。

现在,您的头像的立即更新很可能是因为它已被上传到S3并生成了一个新的URL,因此立即进行了更新。 这就是您希望它工作的方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM