用于缓存 JSON 数据的 Polymer 1.0 策略

Polymer 1.0 strategies for caching JSON data

我正在努力学习 Polymer。我的 objective 是创建一个完全独立的元素(在应用程序内路由,管理应用程序内不同子元素的数据需求)。我的 objective 是创建一个用户可以注入现有网站的元素。例如:

<my-app key="XXXXXXXXXX"></my-app>

'my-app' 被注入现有网站。 key 的值与内部 web-api 调用一起使用,以检索特定于此实现的数据。

'my-app'的内部结构可能是这样的:

<dom-module id="my-app">
     <template>
          <game-list></game-list>
          <game-detail></game-detail>
          <play-game></play-game>
          <leader-board></leader-board>
     </template>
</dom-module>

'game-list' 提供用户可能玩的游戏列表。这里的内容取决于 'key' 属性 的值。同样,'game-detail' 将是从 'game-list' 中选择的游戏的详细信息。 'play-game' 是 UI 允许用户玩他们选择的游戏。最后,'leader-board' 显示所有使用此应用程序的玩家的排名。

我需要一些关于管理策略的帮助 json-请为每个子元素提供数据需求。

  1. 缓存为 'game-list' 元素检索的游戏列表的最佳做法是什么?如果用户从 'game-list' 导航到 'game-detail' 然后返回到 'game-list',我不想随后调用 Web 服务来检索游戏列表。
  2. 从 'game-list' 导航到 'game-detail' 会将 URL 更新为所选游戏的 'id'(路线:“/game-detail/23”)。我希望能够为 ID 为 23 的调用获取游戏详细信息。因此,如果他们再次返回“/game-detail/23”,则不会调用 WebAPI。但是,如果他们导航到“/game-detail/326”,应用程序会意识到 326 与 23 不同,因此它会重新调用 WebApi。

总结一下,缓存数据有哪些strategies/best-practices?

我做了很多 AngularJS 开发并使用 Angular 的服务(它们是单例)为 UI 缓存数据。有没有办法对 Polymer 元素做类似的事情?有没有办法创建充当数据存储的内部机制?

我想我可以依赖本地存储,但更喜欢某种类型的 'service' 作为一种资源,所有元素都可以利用它来检索它们的数据。 'service' 负责向 WebAPI 发送请求(通过 iron-ajax)并根据需要缓存数据。

感谢您的帮助。

在一个应用程序中,我使用 iron-localstorage 来缓存后端数据。

您可以创建自己的 backend-element 来包装 iron-localstorage 并透明地处理所有元素的缓存。

您还可以查看 iron-meta,它使用单态模式在不同组件之间共享数据。