我是前端开发人员,当我编写代码时,我将Sinatra用作静态文件服务器后端:
require 'sinatra'
configure do
set :public_folder, File.dirname(__FILE__)
end
get '/' do
send_file File.join(settings.public_folder, 'index.html')
end
get '/:name' do
file = File.join(settings.public_folder, params[:name])
if File.exist?(file)
send_file file
else
halt 404
end
end
我对此很满意,但这次我被赋予了创建JS介绍的任务,该介绍仅在页面加载时执行一些复杂的行为。
我无法测试这种JS行为,因为在我的开发沙箱中,Sinatra会立即提供文件。
如何让Sinatra以给定的最大速率缓慢提供文件,例如: G。 10 Kbps?另类方法建议也值得赞赏。
答案 0 :(得分:3)
如果您将文件拆分成块并逐渐展示它们,这可能是一个例子:
require 'sinatra'
require "sinatra/streaming"
def file_chunks
[].tap do |chunks|
File.open("index.html", "rb") do |io|
while not io.eof?
chunks << io.read(10)
end
end
end
end
get '/send_file_slowly' do
stream do |out|
file_chunks.each do |chunk|
out.print chunk
out.flush
sleep 0.2
end
end
end