加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Amazon S3缓存音频文件

发布时间:2020-12-17 03:23:31 所属栏目:百科 来源:网络整理
导读:我创建了新的音乐应用程序,并将所有mp3文件存储在Amazon S3上.在转移到S3之前,我将它们存储在服务器文件系统本身上.它用于缓存文件,并且连续重新加载的页面文件未从服务器下载.但是每次加载页面后转到S3都会从S3下载文件.这不仅使我的应用程序变慢,而且对S3
我创建了新的音乐应用程序,并将所有mp3文件存储在Amazon S3上.在转移到S3之前,我将它们存储在服务器文件系统本身上.它用于缓存文件,并且连续重新加载的页面文件未从服务器下载.但是每次加载页面后转到S3都会从S3下载文件.这不仅使我的应用程序变慢,而且对S3的每个请求都是金钱.
我找到了一些关于缓存控制的文档,我尝试了所有这些但没有成功.我可能会在这里遗漏一些东西.任何帮助表示赞赏.谢谢.

这是我在S3上上传mp3文件的代码.我使用CarrierWave和Rails.

CarrierWave.configure do |config|
    config.fog_credentials = {
      :provider               => 'AWS',:aws_access_key_id      =>  MyAppConfig.config['aws']['aws_access_key'],:aws_secret_access_key  => MyAppConfig.config['aws']['aws_secret_key'],}
    config.fog_directory  = MyAppConfig.config['aws']['aws_bucket_name']
    config.fog_public     = false
    config.storage = :fog
    config.fog_attributes = {'Cache-Control'=>'max-age=315576000'}
end

解决方法

如果您使用的是已签名的网址,即表示您在评论中,并且没有重复使用这些已签名的网址,则无法缓存这些请求.

Amazon Web Services无法覆盖Web浏览器的内部缓存系统.如果两个URI是唯一的,就像签名URL一样,那么您的Web浏览器会将它们视为Internet上的两个不同资源.

例如,我们采取:

http://www.example.com/song1.mp3

  

  

  

  http://www.example.com/song2.mp3 

  

这是两个离散的URI.即使song1.mp3和song2.mp3具有相同的Etag和Content-Length HTTP响应头,它们仍然是两种不同的资源.

如果我们只是改变他们的查询字符串,情况也是如此:

http://www.example.com/song1.mp3?a=1&b=2&c=3
http://www.example.com/song1.mp3?a=1&b=2&c=4

这些仍然是两个离散的URI.出于缓存的目的,他们不会互相引用.这是使用query strings to override caching的原则.

没有任何摆弄HTTP标头的东西可以让你获得你正在寻找的缓存行为.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读