【发布时间】:2013-06-05 06:15:39
【问题描述】:
在网络服务器的较量中:
为了避免重新查询(使用find),可以尝试在请求之间保持find 返回的游标引用。 Cursor 对象是一个复杂的对象,例如存储套接字连接。如何存储这样的对象以避免对后续 Web 请求的重新查询?我正在使用 Node.js,但任何建议都是有帮助的(不管是什么语言:rails、C#、Java、PHP)。
(我正在使用持久会话)
【问题讨论】:
-
由于游标以文档的 16meg 限制定义的小批量返回,我不确定存储对游标的引用有多有用,实际上它可能是微优化,因为您只会避免16meg 的结果,您必须再次重新查询
-
在必须显示查询结果的网络应用程序中是否有任何帮助的光标?我正在考虑诸如 Twitter 流或 Facebook 新闻提要之类的场景,其中您有“无限”流或项目。
-
嗯,是的,所有查询结果都作为游标返回,无论是服务器端还是客户端,客户端游标对象是服务器自己的表示。我仍然不知道它对 facebook 提要或 twitter 提要有多大用处。我认为您可能会在第一页上显示至少 16 兆的结果,当您使用 ajax 获得更多结果时,您只需允许创建一个新光标,很可能此时旧光标已经被 gced。跟踪这一点可能不仅仅是重新查询更多的工作。
-
为什么 PHP 驱动程序已经为您存储光标了?这就是您能够“获取更多”文档的方式(即获取下一批)您能描述一下您的确切用例吗?
-
@AsyaKamsky 他的意思是在脚本之间,所以想象一下你在 filea 中有一个光标,但想在 fileb 中使用它,而不是创建一个新的光标
标签: php ruby-on-rails node.js mongodb web-applications