我想知道像 Google Reader、Logline、technorati 这样的 Web 应用程序是如何工作的,以及它们遵循什么技术来使用 cron 作业一次解析数百万个 RSS 提要?
最佳答案
有很多不同的技术……“最差”的技术就是您所描述的技术。 (基于时间的轮询)。
您首先需要考虑的是,它们可能并非都在服务器端进行解析。例如,我知道 Netvibes 是在客户端进行解析(但将内容缓存在服务器上),因此为他们节省了很多资源。这样一来,他们只有在用户向他们提出要求时才轮询提要,因此他们无需运行某种时间循环。
不幸的是,基于时间的轮询仍然是最常见的解决方案。有很多技术可以确定何时是进行民意调查的最佳时间。基于过去的更新频率,基于订阅的用户数量......等等。这些人也可以使用旧的 XML-RPC ping 服务器。
最有效的技术是使用 PubSubHubbub ,它是 Google Reader、Netvibes 和几千个其他应用程序(如 Digg.com、Twitterfeed、Friendfeed...)使用的开放协议(protocol)。它是一个开放协议(protocol),允许提要发布者直接将提要的内容推送到订阅应用程序。它非常有效,但需要发布者来实现它。一个偶然的机会,所有大型博客平台(Tumblr、Posterous、Wordpress、Blogger、SixApart...等)都已经实现了它。其他提要发布应用程序(如 feedburner、Gowalla 等)也实现了它。如果您确实发布了提要,我鼓励您加入这个人群,如果您打算使用一些提要,请同时实现 susbcriber 端。
最后的解决方案是使用第 3 方应用程序来收集数据(使用上述所有技术)并在这些提要实际上有新内容时通知您。我创建了一个:Superfeedr我相信我们在这方面做得很好。我们还规范了内容并做了一些其他事情来帮助您以最简单和廉价的方式使用提要数据(轮询可能非常昂贵)。此外,我们使用完全相同的 PubSubHubbub 协议(protocol)从任何提要推送内容,这使得我们的用户除了订阅可用的中心之外,还可以非常简单地使用我们的服务。
此外,我应该补充一点,我能够快速回复您的问题,因为我使用的应用程序会向我推送带有 RSS 标签的问题的提要内容 :)
关于xml - RSS 阅读器的工作原理(netvibes、Google 阅读器...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3949688/
我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为
我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request
在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo
几个月前,我读了一篇关于rubygem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:
使用Ruby1.9.2运行IDE提示说需要gemruby-debug-base19x并提供安装它。但是,在尝试安装它时会显示消息Failedtoinstallgems.Followinggemswerenotinstalled:C:/ProgramFiles(x86)/JetBrains/RubyMine3.2.4/rb/gems/ruby-debug-base19x-0.11.30.pre2.gem:Errorinstallingruby-debug-base19x-0.11.30.pre2.gem:The'linecache19'nativegemrequiresinstall
一、引擎主循环UE版本:4.27一、引擎主循环的位置:Launch.cpp:GuardedMain函数二、、GuardedMain函数执行逻辑:1、EnginePreInit:加载大多数模块int32ErrorLevel=EnginePreInit(CmdLine);PreInit模块加载顺序:模块加载过程:(1)注册模块中定义的UObject,同时为每个类构造一个类默认对象(CDO,记录类的默认状态,作为模板用于子类实例创建)(2)调用模块的StartUpModule方法2、FEngineLoop::Init()1、检查Engine的配置文件找出使用了哪一个GameEngine类(UGame
我知道全局变量$!包含最新的异常对象,但我对下面的语法感到困惑。谁能帮助我理解以下语法?rescue$! 最佳答案 此构造可防止异常停止您的程序并使堆栈跟踪冒泡。它还会将该异常作为值返回,这很有用。a=get_me_datarescue$!在此行之后,a将保存请求的数据或异常。然后您可以分析该异常并采取相应措施。defget_me_dataraise'Nodataforyou'enda=get_me_datarescue$!puts"Executioncarrieson"pa#>>Executioncarrieson#>>#更现实的