一般来说,npm搜索行为很奇怪,需要很长时间,并且会不时地按顺序和时间变化。
我第一次写
$ npm search jquery
花了两分多钟。后续搜索大约需要30秒。有时我会在http请求之前得到匹配,有时反过来:
首先匹配结果
$ npm search jquery.appendgrid
NAME DESCRIPTION AUTHOR DATE VERSION KEYWORDS
jquery.appendgrid appendGrid - The dynamic table input jQuery plugin =hkalbertl 2014-12-21 08:09 1.5.1 jquery-plugin ui header-detail master-d
npm http GET https://registry.npmjs.org/-/all/since?stale=update_after&startkey=1419625615355
npm http 200 https://registry.npmjs.org/-/all/since?stale=update_after&startkey=1419625615355
最后匹配结果
$ npm search jquery.appendgrid
npm http GET https://registry.npmjs.org/-/all/since?stale=update_after&startkey=1419625643062
npm http 200 https://registry.npmjs.org/-/all/since?stale=update_after&startkey=1419625643062
NAME DESCRIPTION AUTHOR DATE VERSION KEYWORDS
jquery.appendgrid appendGrid - The dynamic table input jQuery plugin =hkalbertl 2014-12-21 08:09 1.5.1 jquery-plugin ui header-detail master-d
在任何一种情况下,大约需要30秒。由于它花了不到最初的两分钟,我猜有些东西已被缓存,但它仍然会产生一个http请求,但它仍然需要很长时间。这不是第一个http线和第二个http线之间的时间,只需要1-2秒。但是前后都有很多等待时间。
发生了什么事,我可以加快速度吗?
答案 0 :(得分:17)
一年前,当编写该教程时,npm
发布的包较少。目前有超过100,000。为了执行npm search
,npm
下载描述所有包的JSON文件,对其进行粗略索引,然后搜索所有包描述。
结果是npm search
作为本地命令现在基本上被破坏了 - 它完成了,但非常慢,并且它创建了一个惊人的大文件(60MB)。
目前建议的解决方法是使用https://www.npmjs.com/
上的在线搜索工具答案 1 :(得分:1)
npm回购不应该很慢。有些人在这里说它有超过100,000个包...它实际上有超过165.000但是这个数字对于任何数据库来说都非常小。我相信他们使用的CouchDB非常快。 在任何情况下,如果您没有获得所需的结果,您可以随时使用其他替代搜索网站:
答案 2 :(得分:0)
我也遇到过这种情况,我怀疑npm会更新本地缓存的包列表。长延迟可能是获取回购数据。
刚才我的第一次搜索花了35秒(一个小cpu,一个漫长的等待,然后是10秒的固态cpu)。后续搜索需要11秒,CPU利用率为97%。
编辑:AMD 3.6 GHz Phenom II上的10秒CPU,相应地调整硬件。