【问题标题】:Client side caching in GWTGWT 中的客户端缓存
【发布时间】:2011-01-22 16:30:00
【问题描述】:

我们有一个 gwt 客户端,它从我们的服务器接收大量数据。从逻辑上讲,我想在客户端缓存数据,使服务器免受不必要的请求。

到今天为止,我已经让我的模型来处理数据的缓存,这不能很好地扩展。这也成为了一个问题,因为我们团队中的不同开发人员开发了他们自己的“缓存”功能,这使项目充满了重复。

我正在考虑如何实现一个“单一入口点”,它处理所有缓存,让模型对如何处理缓存一无所知。

有人对 GWT 中的客户端缓存有任何经验吗?是否有可以实施的标准方法?

【问题讨论】:

    标签: java gwt caching


    【解决方案1】:

    有两个级别的缓存:

    • 在一个浏览器会话期间进行缓存。
    • 缓存跨浏览器会话,例如在浏览器重启后缓存的数据应该可用。

    要缓存的内容:取决于您的应用程序,您可能需要缓存

    • 特定用户的受保护数据
    • 公共静态(或半静态,例如很少更改)数据

    如何缓存:

    • 对于第一个缓存级别,我们可以使用答案中建议的 GWT 代码或编写自己的代码。
    • 对于第二个,我们必须使用浏览器缓存功能。标准方法是将您的数据放入 html 中(例如,无论是静态 html 文件还是由 jsp/servlet 生成的动态文件)。然后,您的应用程序使用http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsOverlay.html 技术获取数据。

    【讨论】:

      【解决方案2】:

      我认为Itemscript 有点整洁。它是一个 RESTful JSON 数据库,可在客户端 (GWT) 和服务器上运行。

      看看吧!

      -JP

      【讨论】:

        【解决方案3】:

        对于已经完全构建的、非常复杂的 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

        【讨论】:

          【解决方案4】:

          您可能想看看命令模式; 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 中。此后,缓存的结果将返回给所有排队的和新创建的 AsyncCallbacks,用于同一服务调用。

          【讨论】:

            【解决方案5】:

            我建议您查看 gwt-presenterCachingDispatchAsync 。它为执行远程命令提供了单一入口点,因此是缓存的绝佳机会。

            recent blog post 概述了一种可能的方法。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2017-03-18
              • 2012-07-26
              • 2019-04-24
              • 1970-01-01
              • 1970-01-01
              • 2011-08-27
              • 2014-12-02
              • 1970-01-01
              相关资源
              最近更新 更多