我有一个使用Rails 4.0和asset pipeline的cedar应用程序。我想为asset pipeline中的所有资产设置自定义头文件。如何做到这一点?
rdrgkggo1#
一种简单的方法是使用机架插件,类似于:
class RackAssetFilter def initialize app @app = app end def call env @status, @headers, @body = @app.call env if env['PATH_INFO'].starts_with?( "/assets/" ) @headers['X-Header-1'] = 'value' # ... end return [@status, @headers, @body] end end
要启用它,请在application.rb中:
config.middleware.insert_before( ActionDispatch::Static, RackAssetFilter )
请记住,在将RackAssetFilter插入到application.rb中的中间件堆栈之前,需要通过require声明或加载RackAssetFilter
jqjz2hbq2#
从Rails 5开始,您可以在相应环境的配置文件中使用config public_file_server.headers,以应用所需的头文件,例如:
public_file_server.headers
# in config/environments/production.rb config.public_file_server.headers = { "Cache-Control" => "public, max-age=31536000" }
上面的代码片段将为生产环境中的资产配置带有public, max-age=31536000值的Cache-Control头。
public, max-age=31536000
Cache-Control
2条答案
按热度按时间rdrgkggo1#
一种简单的方法是使用机架插件,类似于:
要启用它,请在application.rb中:
请记住,在将RackAssetFilter插入到application.rb中的中间件堆栈之前,需要通过require声明或加载RackAssetFilter
jqjz2hbq2#
从Rails 5开始,您可以在相应环境的配置文件中使用config
public_file_server.headers
,以应用所需的头文件,例如:上面的代码片段将为生产环境中的资产配置带有
public, max-age=31536000
值的Cache-Control
头。