我现在拥有的是:
get "/" do
submitMeToTheDatabase = veryLongFunction(params[:processme])
Information.create(complicatedInformation:submitMeToTheDatabase)
redirect "/otherPage"
end
它是否会以相同的方式工作,但如果我这样做,则会改善用户的加载时间?
get "/" do
redirect "/otherPage"
submitMeToTheDatabase = veryLongFunction(params[:processme])
Information.create(complicatedInformation:submitMeToTheDatabase)
end
附录
另一种完成同样事情的方法是什么?有点像:
get "/" do
fork do
submitMeToTheDatabase = veryLongFunction(params[:processme])
Information.create(complicatedInformation:submitMeToTheDatabase)
end
redirect "/otherPage"
end
答案 0 :(得分:1)
自从我使用过sinatra已经有一段时间了,但我认为第二种不会起作用。
redirect
方法的source表示redirect
调用暂停(source)并立即停止进一步处理。
您可以将任务放入作业队列并在另一个线程上处理它。请参阅here以了解我的意思。
queue = Queue.new
get "/" do
queue << params[:processme]
redirect "/otherPage"
end
consumer = Thread.new do
loop do
data = queue.pop
submitMe = veryLongFunction(data)
Information.create(complicatedInformation:submitMeToTheDatabase)
end
end
代码未经测试。