【问题标题】:Grails store and fetch data on client sideGrails 在客户端存储和获取数据
【发布时间】:2013-02-26 15:32:58
【问题描述】:

背景:我们使用的是 grails 2.1.1。到目前为止,我们没有使用任何数据库。我们为另一台服务器上的每个响应进行 Web 服务调用。

现在的问题是,有一个 Web 服务调用,它以 XML 形式返回一些静态数据,并且这些数据在整个应用程序中都是可用的。 xml 的大小约为 40kb。此 xml 包含静态数据,如 project_list、status_type_list 等,我们必须在不同 gsp 页面的各种下拉菜单和菜单项中使用它。

所以,请向我们建议处理这些数据的最佳方式。这样它就不会影响我们的页面加载时间和浏览体验。我们也可以轻松地在客户端使用数据。

【问题讨论】:

  • 您从哪里调用 Web 服务?客户端还是服务器?如果它是客户端,我假设它是,那么缓存插件不能使用。
  • @uchamp:我们正在从我们的控制器和服务调用网络服务,在这种情况下,我猜它们充当客户端。

标签: caching grails cookies local-storage


【解决方案1】:

回复您对该问题的评论。如果要求像您所说的那样简单,我更喜欢在插件上使用基于注释的缓存。

如果调用是从服务器端进行的,并且您想要缓存解析后的 XML 的结果,那么您可以执行以下操作:

@Cacheable("staticDataCache")
def getStaticDataFromXML() {}

然后您可以使用上述方法来拉取地图,列出您用于存储结果的任何数据结构,然后它将从缓存中拉取。

然后是另一个刷新缓存的服务方法,您可以从作业中频繁调用。

@CacheFlush("staticDataCache")
def flushStaticDataCache() {}

【讨论】:

  • Thanx uchamp :) 我从没想过这么简单。但是你能建议我(根据我的要求),我应该使用缓存还是 servletContext 来存储我的数据。因为现在两者都为我工作。
  • 接受您的回答,尽管我将在我的应用程序中使用 servletContext。
  • 不错!我不知道从 servletContext 存储/检索东西有那么容易。定义。要走的路。谢谢你告诉我这件事:)
【解决方案2】:

使用cache plugin 缓存静态xml 数据。然后添加一些关于何时更新缓存的策略......(即使用作业检查 xml 是否每小时都更改)

【讨论】:

  • 感谢您的回复。我想这是我们可以使用的最佳选择。我已经浏览了它的文档,但找不到如何缓存地图列表(从我从我的网络服务接收的 xml 解析和转换)。你能帮帮我吗?
猜你喜欢
  • 2016-04-19
  • 1970-01-01
  • 2019-10-12
  • 1970-01-01
  • 2011-06-14
  • 1970-01-01
  • 2021-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多