【问题标题】:Making Mongrel/WEBRick serve static assets with future expires header使 Mongrel/WEBRick 使用 future expires header 服务静态资产
【发布时间】:2011-07-13 11:46:35
【问题描述】:

我正在创建一个 Rails 应用程序,它将部署到桌面计算机上,同时运行网络服务器和浏览器(这是一个测试应用程序,需要能够在没有互联网连接的情况下运行)。

出于这个原因,我将运行 Mongrel 或 WEBRick,而不像通常那样在它前面运行 Apache/Nginx。浏览器会直接访问 Mongrel。

我现在面临的问题是加载资产(javascript/样式表/图像)需要一段时间。通常,我会通过在 Mongrel/WEBRick 前面的 Apache 代理中设置这些资产的未来到期日期来解决此问题,这样资产只会被请求一次,之后每个操作只有一个请求。

但在这种情况下,没有代理,我使用的是config.serve_static_assets = true

所以问题是:是否可以告诉 Mongrel/WEBrick 在静态资产上添加远期到期标头?

我在 Ruby 1.9.2 上使用 Rails 3。

【问题讨论】:

标签: ruby-on-rails caching mongrel assets webrick


【解决方案1】:

你可以试试这样的:

   def get(path)
     @headers['Content-Type'] = MIME_TYPES[path[/\.\w+$/, 0]] || "text/plain"
     unless path.include? ".." # prevent directory traversal attacks
       @headers['X-Sendfile'] = "#{PATH}/static/#{path}"
     else
       @status = 403 # "403 - Invalid path"
     end
   end

【讨论】:

  • 不完全是最佳的,但这确实是一个可能的解决方案。谢谢。
猜你喜欢
  • 1970-01-01
  • 2017-02-15
  • 2021-11-10
  • 2022-09-23
  • 1970-01-01
  • 1970-01-01
  • 2015-06-15
  • 2020-08-23
  • 2018-10-10
相关资源
最近更新 更多