我在另一个线程上读到,数据模式也很重要,需要使用不同类型的压缩。数据模式是一致的,并且类似于以下内容。
:desc=>some_description
:url=>some_url
:content=>some_content
:score=>some_score
:more_attributes=>more_data
有人能推荐一种解决方案来减少这个延迟吗? 延迟大约为6-8秒。 我正在使用Ruby on Rails开发此应用程序,提供数据的服务器大多使用Python。
:desc=>some_description
:url=>some_url
:content=>some_content
:score=>some_score
:more_attributes=>more_data
有人能推荐一种解决方案来减少这个延迟吗? 延迟大约为6-8秒。 我正在使用Ruby on Rails开发此应用程序,提供数据的服务器大多使用Python。
我首先会看一下这8秒延迟有多少是由以下原因引起的:
服务器端处理(数据生成需要花费的时间)。 有很多提高这个时间的技巧,包括:
DB索引
缓存
更快的to_json库
一些非常好的资源是关于Rails可扩展性的NewRelic播客http://railslab.newrelic.com/2009/02/09/episode-7-fragment-caching
传输延迟(数据在服务器和客户端之间传输所需的时间)
如果键几乎相同,可以使用JSON编码数据包的压缩算法?的解决方案;您可能还希望查看https://github.com/WebReflection/json.hpack/wiki/specs-details和http://www.nwhite.net/?p=242
除此之外,您还可以从前端服务器进行压缩(gzip): http://httpd.apache.org/docs/2.0/mod/mod_deflate.html http://wiki.nginx.org/NginxHttpGzipModule
如果数据结构是固定的,也可以尝试实现二进制服务,这种方法速度非常快,包括压缩,但也更难维护,例如使用thrift: http://www.igvita.com/2007/11/30/ruby-web-services-with-facebooks-thrift/
如果适合您的需求,也许您可以在服务器端制作某种版本控制/缓存系统,并仅发送修改过的记录(但实现起来比较繁重)