我将查询结果缓存在服务器端的文件中。提交新查询时,Web 服务会搜索缓存文件中是否有答案。如果有,它将发送该文件。如果没有,它将生成结果并将其发送到客户端。现在,当它发送缓存文件时,下载速度要快得多(与生成结果并以字符串格式发送相比)。我所说的下载时间是指(用户等待响应的总时间)-(在服务器上处理所花费的时间)
您知道原因是什么吗?或者您有什么建议可以告诉我如何找出原因?
Web服务是用Ruby编写的,而客户端是用JavaScript编写的。
答案1
发送文件由操作系统处理。它只是将内容塞入套接字,不需要应用程序的额外开销。它实际上是“发射后不管”的。
从数据库服务器发送数据流要复杂得多。必须编写查询、编码、通过套接字发送、由服务器解释、执行,并且必须重新编码结果集并通过线路发送回去。也许你从计算中扣除了这个时间,但这并不清楚。
然后,一旦客户端收到结果,它必须从套接字读取它,将其转换为 Ruby 对象(可能产生更多开销的模型),并将该结果对象交还给请求方法。如果您随后将其重新序列化为结果,则必须再次将此数据复制到输出流中。
总而言之,从预先存在的文件中读取:零读取,零复制。
从数据库读取:一次读取,两次复制。