Dan*_*son 5 ruby ruby-on-rails amazon-web-services amazon-cloudfront
背景
我目前正在开发一个Rails 3项目,我打算与Amazon CloudFront一起使用,其中一个自定义源指向我的实际Web服务器.这意味着我的Web服务器将告诉浏览器从CloudFront检索静态资产,如果CloudFront已缓存资产,它将返回它,如果不是,它将使用来自我的Web服务器的相同路径检索它,然后将其缓存以备将来使用要求.
问题
Amazon CloudFront在确定是否应该破坏其自己的缓存以从其原始位置重新下载资产时,会删除并忽略查询字符串参数.这显然会导致Rails生成URL的方式出现问题RAILS_ASSET_ID
:/assets/path/to/asset.ext?RAILS_ASSET_ID
.使用默认资产URL,CloudFront将保留过时资产长达24小时.
解?
我希望做的是以某种方式覆盖Rails 3生成资产标签的方式,以便我可以生成类似的URL /assets/RAILS_ASSET_ID/path/to/asset.ext
.我已经有了一个如何使Web服务器响应这些URL的解决方案,我只需要弄清楚如何让Rails生成URL.
笔记
RAILS_ASSET_ID
将是我最新的git commit hash的子字符串.设置此项将在部署过程中由capistrano处理.我可以在每个部署中清除所有资产缓存,我不需要特定于资产的IDActionView::Helpers::AssetTagHelper.rewrite_asset_path
但它似乎没有工作,从我读到的这是一个不应该依赖的私有方法.“设置ActionController::Base.config.asset_path
为一个进程,该进程采用未修改的资源路径并返回资源缓存工作所需的路径。”
这是来自AssetTagHelper文档。
归档时间: |
|
查看次数: |
747 次 |
最近记录: |