iT邦幫忙

2022 iThome 鐵人賽

DAY 21
0

Middleware Fast and Slow

我們在不同路徑有一堆不同認證機制的 Rack 中介軟體
你必須夠清楚知道哪些是你需要用到的

# sample_dir/config.ru

require "rack/lobster"
use Rack::ContentType
class BenchMarker
  def initialize(app, runs = 100)
    @app, @runs = app, runs
  end
  def call(env)
    t = Time.now
    result = nil
    @runs.times { result = @app.call(env) }
    t2 = Time.now - t
    STDERR.puts <<OUTPUT
    Benchmark:
      #{@runs} runs
      #{t2.to_f} seconds total
      #{t2.to_f * 1000.0 / @runs} millisec/run
      OUTPUT
      result 
  end
end

use BenchMarker, 10_000
run Rack::Lobster.new

這是個簡單基礎的 Rack 應用程式,
下面可以看他平均花多少時間載入(很快速)

 Benchmark:
      10000 runs
      0.476974 seconds total
      0.0476974 millisec/run

其實 Rack 跑很快,
如果你的應用程式跑很慢,
可以去看一下從哪裡載入 Rack,
並且找出變慢的原因

ActionController::Dispatcher 是 Rails 主要的 Rack 應用程式
如果想看看 Rails 中的 Rack 如何運用,記得要來讀它

ActionController::Base 讓你可以針對 controller 的 action 使用 mini-Rack-apps


上一篇
Day 20 - Rack Middleware
下一篇
Day 22 - Real Routing
系列文
從0開始刻 淺談 Rails 的運作魔法30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言