gpt4 book ai didi

ruby-on-rails - 为什么 ActionDispatch::Static 从生产中的中间件栈中移除?

转载 作者:行者123 更新时间:2023-12-03 17:33:22 26 4
gpt4 key购买 nike

我试图了解 Rails 如何在 /public 下提供静态文件,如果我理解正确,ActionDispatch::Static 中间件负责此操作。

但是,我注意到它只在开发环境中可用:

$ rake middleware

use Rack::Sendfile
use ActionDispatch::Static
use Rack::Lock
.
.

并在生产中:

$ RAILS_ENV=production rake middleware

use Rack::Sendfile
use Rack::Lock
.
.

那么静态文件是如何在生产中提供的呢?我的猜测是这是由 Web 服务器本身(apache、puma 等)处理以提高性能,这是正确的吗?

如果是这样的话,那为什么要为这个开发任务创建一个专用的中间件呢?

谢谢。

最佳答案

这由 config/environments/production.rb 中的设置控制:

# Disable Rails's static asset server (Apache or nginx will already do this).
config.serve_static_files = false

在开发中未启用此功能的原因是因为在开发中您不需要 nginx 或 apache 的额外功能/开销。例如,您不希望您的浏览器在开发时获得缓存这些文件的指令。

ActionDispatch::Static 只会从磁盘加载这些文件并将它们发送到浏览器,没什么特别的。所有对 public 的请求都将由 ActionDispatch::Static 处理,所有其他请求都由您的 Rails 应用程序处理。

关于ruby-on-rails - 为什么 ActionDispatch::Static 从生产中的中间件栈中移除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34287038/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com