我有一个部署在GAE上的GWT应用程序。我的应用程序的一部分依赖于静态数据,该数据当前存储在XML文件中。应用程序将此数据读入POJO集合。使用GWT-RPC将数据发送到客户端。根据用户所做的选择,它将过滤器应用于集合以获取特定对象(过滤在客户端完成)。
数据最多可包含3000条记录,XML文件总大小约为1MB。应用程序端没有这些数据的更新(它是只读的),但我可能经常在最初的几个月内添加新记录或更新/修复现有记录(随着应用程序的发展)。数据与应用程序中的任何其他数据无关。
我在获取性能方面的主要考虑因素之一。我尝试使用Apache Digester来解析XML,但是注意到即使解析600条记录并将它们发送到客户端也有点慢。
鉴于以下哪些要求会更好以及为什么 - 1.将数据保存在XML文件中,或者2.将数据存储在应用引擎数据存储中?
感谢。
答案 0 :(得分:4)
一种替代方法是直接通过GWT加载XML文件(不使用GWT-RPC和服务器解析):
使用RequestBUilder从服务器获取数据。用法示例:http://www.gwtapps.com/doc/html/com.google.gwt.http.client.html
然后使用XMLParser解析回复。示例:http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsXML.html#parsing
以下是结合两者的示例:http://www.roseindia.net/tutorials/gwt/retrieving-xml-data.shtml
唯一的缺点是你必须通过DOM手动解析XML,其中GWT-RPC直接生成对象。
<强>更新强>
基于我建议的评论:
使用JAXB解析XML文件以创建对象:http://jaxb.java.net/guide/_XmlRootElement_and_unmarshalling.html
将这些内容保存到内存缓存:http://code.google.com/appengine/docs/java/memcache/overview.html
在RPC请求中,检查内存缓存,如果数据不在那里,请转到1。
答案 1 :(得分:0)
我看待事物的方式,有两个瓶颈,虽然是相互关联的。一个是加载数据(从XML读取,解析)。另一个是发送给客户端。 您可以考虑批量发送,而不是发送整个群体。
通常我更喜欢在WEB-INF下存储这些文件。