0

我是 node.js(和一般的 javascript)的新手,所以我想我会通过使用 YQL 创建一个简单的天气应用程序来学习。总体而言,该应用程序正在运行,但请求非常缓慢。返回 json 大约需要 6 秒。另一方面,我使用 jQuery(getJSON) 创建了相同的应用程序,并且几乎立即得到结果。

这是从 node.js 中的 url 解析 json 的最佳方法吗?

var request = require('request');

var url = 'http://query.yahooapis.com/v1/public/yql?q=SELECT%20*%20FROM%20weather.forecast%20WHERE%20location%3D96720&format=json&diagnostics=true&callback='

request(url, function (error, response, body) {
    console.log(body);
})

我将不胜感激任何反馈和/或建议。

提前致谢。

4

1 回答 1

0

我只是试图在我的浏览器中打开该 url,超过 10 秒后,它仍在加载。(更新:它超时了。)

我的猜测是,雅虎正在设置您的浏览器尊重的缓存标头,因此您的第一个请求可能已被缓存,然后几乎立即从您的浏览器缓存中加载每个 jQuery 请求。request()没有本地缓存​​,因此每次都下载一个新副本,这需要更长的时间。

尝试清除您的浏览器缓存,看看它是否运行得一样快 - 如果第一个请求很慢,那么这将证实我的怀疑。

更新:这里有一些关于请求速度的更多信息:

  • 我的家庭互联网连接:主要是超时。(Time Werner Cable / Road Runner;俄亥俄州西部)
  • 我在加利福尼亚的 prgmr.com 服务器:快速 - 在 node.js 中第一个请求花费了 1.151 秒,之后每个请求都小于 0.1 秒。节点 v0.8.21
  • 在 heroku 上运行的 node.js Web 代理:快速 - 0.28 秒,包括将其代理回我的笔记本电脑的时间 - http://www.nodeunblocker.com/proxy/http://query.yahooapis.com/v1/public/ yql?q=SELECT%20 *%20FROM%20weather.forecast%20WHERE%20location%3D96720&format=json

所以,我开始认为它可能取决于位置,并且至少可以说该节点并不慢。如果不出意外,您可以随意通过我的 heroku 服务器代理请求。请注意,它是一个免费帐户,因此当 heroku “闲置”它时,下一个请求会很慢或有时会出错。

于 2013-03-29T21:23:49.930 回答