[英]Client side caching in GWT
我们有一个gwt-client,可以从我们的服务器中获取大量数据。 从逻辑上讲,我想在客户端缓存数据,使服务器免于不必要的请求。
截至今天,我已经让我的模型处理数据的缓存,这种数据的扩展性不是很好。 这也成为一个问题,因为我们团队中的不同开发人员开发了自己的“缓存”功能,这使得项目充满了重复。
我正在考虑如何实现一个“单一入口点”,它处理所有缓存,让模型对如何处理缓存毫无头绪。
有没有人在GWT中有客户端缓存的经验? 是否有可以实施的标准方法?
我建议你研究一下gwt-presenter和CachingDispatchAsync
。 它为执行远程命令提供了单一入口点,因此是缓存的绝佳机会。
最近的博客文章概述了一种可行的方法。
你可能想看看命令模式; Ray Ryan在Google IO上就GWT的最佳实践发表了演讲,以下是成绩单: http : //extgwt-mvp4g-gae.blogspot.com/2009/10/gwt-app-architecture-best-practices.html
他建议使用Action和Response / Result对象来使用命令模式,这些对象被抛入和退出服务代理。 这些是封装您要在客户端上执行的任何缓存的优秀对象。
这里有一段摘录:“我有一个很好的货币单位来实现缓存策略。可能每当我看到两次相同的GET请求时,我会缓存上次得到的响应并立即将其返回给我自己。打扰服务器端旅行。“
在一个相当大的项目中,我采取了另一个方向。 我开发了一个DtoCache对象,它基本上保存了对每个AsyncCallback的引用,这些AsyncCallback期望来自等待队列中的服务调用的响应。 一旦DtoCache从服务器接收到对象,它们就被缓存在DtoCache中。 此后,缓存的结果将返回到同一服务调用的所有排队和新创建的AsyncCallback。
对于已经完全构建的非常复杂的CRUD操作缓存引擎,请考虑Smart GWT。 此示例演示了自适应地执行客户端操作的能力(当缓存允许时),同时仍支持对大型数据集的分页:
http://www.smartclient.com/smartgwt/showcase/#grid_adaptive_filter_featured_category
如果您需要将自己的小部件放在其上,则通过ResultSet类公开此行为:
http://www.smartclient.com/smartgwtee/javadoc/com/smartgwt/client/data/ResultSet.html
有两种级别的缓存:
缓存内容:取决于您的应用程序,您可能希望缓存
如何缓存:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.