0

嗨,我需要对我的研究项目提出建议。

我正在构建一个数据库,该数据库读取由谷歌警报生成的 RSS 提要,并将结果保存在数据库中以供以后分类。我正在使用 Wordpress 和 pods 框架来处理数据库和 UI。

我有 4 个带有自己的表的对象(豆荚):

  • 资源,它是从警报提要中获取的站点数据。
  • 来源,它是站点的域,例如 stackoverflow.com
  • 提要,带有警报查询和 rss url。
  • 主题,其他对象归类的主要主题。

程序流程很快是这样的:

  • 对于每个主题,请获取提要。
  • 对于每个提要加载 rss xml。
  • 对于 rss 中的每个条目 URL,如果比上次检查更新,则控制域是否已保存在 Sources 对象中。
  • 如果源存在,请检查 URL 是否保存在 Resource 对象中。
  • 如果资源存在(即我们已经拥有此 URL 的数据),则将当前主题和循环提要添加到资源(如果不存在)。
  • 如果资源不存在,则将资源与一些数据以及当前主题和提要一起保存。
  • 如果源不存在,则将源与当前主题一起保存。

这样,我将拥有大量带有链接提要和主题的资源,以及带有主题的相关资源。

问题是数据增长得非常快,一个月内我已经达到了1500多条资源记录。

所以现在每次我运行脚本时,因为对于每个新条目,它都必须将它与所有以前的条目进行比较,脚本会自动挂起。

所以我需要一种方法来提高效率或避免拆分过程的问题。

由于脚本是通过 Ajax 调用的,我认为这个流程可以工作:

  • 向服务器询问主题/提要结构。
  • 对于每个主题中的每个提要,要求服务器加载 XML 并将其传回有一个数组。
  • 然后在前端为每个条目发送一个比较和保存调用。

当然,缺点是我会接到很多电话。

我听说的另一种技术是在服务器进程期间刷新数据,因为我知道这应该会欺骗服务器时间限制以重置。但我不确定我是否理解得很好。

当然,最好的解决方案是使用更具体的代码而不是两个通用抽象层来重建所有内容。但是我真的来不及了!

编辑:这里的代码https://github.com/bakaburg1/overeer

4

1 回答 1

2

我认为您一次加载了太多数据。AJAX 的重点是一次加载一点数据,根据需要按需加载。只要您正在运行以返回数据的脚本不会像您的脚本那样挂起,那么您对服务器进行大量 HTTP 调用并不重要。

我建议质疑您是否真的需要一次返回所有这些数据。如果你认为你这样做了,那么前端重新设计可能是有序的。不要在一个页面上一次加载太多数据,以至于加载时间很长。如果你这样做了,缓存和其他东西会有所帮助,但它永远不会真正解决问题。

于 2013-06-30T18:38:03.493 回答