亚马逊云端为不同的用户提供不同的资产?

时间:2015-12-15 16:22:56

标签: javascript css ruby-on-rails amazon-cloudfront

我在rails app中有以下文件夹结构。

|-assets
  |-javascript
    |-lib
        bootstrap.js
        jquery.js
    application.js
  |-styleesheet
     |-lib
       bootstrap.js
  application.js

静态资产由不熟悉的人托管在云端,我不知道它是如何完成的。

我在production.rb中给出了以下配置。

config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?
config.assets.compile = true
config.action_controller.asset_host = 'cloudfront url'

在视图页面中,它将是这样的:

<%[application,lib/bootstrap].each do |css_url| %>
   <%= stylesheet_link_tag css_url%>
<%end%>

<%[application,lib/bootstrap,lib/jquery].each do |js_url| %>
   <%= javascript_include_tag js_url%>
<%end%>

在生产中部署时,对于第一个请求,它将编译assets文件夹并将它们存储在缓存中。对于后续请求,它将从缓存中获取。但每次我主持并为一些文件生成第一个请求缓存,而不是为所有文件生成。

1 个答案:

答案 0 :(得分:0)

您的问题不是很明确,但请确保两个用户在文件中都收到相同的指纹。如果指纹不同,则可能是错误,而不是使用cloudfront,但导轨应用程序出现问题。

导致此错误的最可能原因是某些多个应用程序工作程序正在运行(一些服务较旧的资产,一些较新的服务)。

如果上述方法无法帮助您解决问题,请使用您的rails设置的详细信息进行更新 - 缓存层,负载均衡器,应用服务器等。