背景 - 我正在通过我的Rails应用程序向浏览器提供文件(文本,图像),因为用户也需要进行身份验证。这些文件在文件系统上,但引用在数据库中,因为我正在使用PAPERCLIP。使用AUTHLOGIC进行身份验证。我发现响应时间非常糟糕,因为每个HTML /图像等请求必须通过Rails层我猜AUTHLOGIC,PAPERCLIP然后流回来。
Q1 - 如何从HTTP请求到达rails应用程序的第一点开始直到它准备好开始流回请求时(即避免网络流量变化)? / strong>
我在我的控制器中使用“基准”但是我很确定我错过了其他延迟,例如:通过AuthLogic进行身份验证等...例如,我大致正在做
def find
self.class.benchmark("BENCHMARK REPORT") do
search_path = params[:path] * "/"
webfile = Webfile.find_by_path( search_path )
if webfile
send_file webfile.file.path , :type => webfile.file_content_type, :disposition => 'inline'
else
render :text => "COULD NOT FIND YOUR FILE WITH PATH = #{params [:path]}"
end
end
end
Q2 - 鉴于我希望用户对HTML&相关文件(CSS,图像),然后页面需要,是否有任何明显的方法来获得一个数量级的改进?我想我可以在会话状态保存HTML页面需要的子文件列表&得到它的文件位置路径,直到后续请求到来,那将是一些数据库查找(以牺牲使用会话状态为代价)?
感谢
答案 0 :(得分:1)
有很多方法可以做到这一点。一个好的方法是在你的应用程序中安装New Relic插件,进行这种性能监控。您需要付费才能在生产中使用它,但它可以在本地免费用于开发基准测试和分析。
虽然我没有亲自使用过它们,但还有其他几家提供类似产品的公司。
此外,rails现在附带一些脚本来进行基准测试和分析。查看script/performance