【问题标题】:how does caching work in flex web application?缓存在 flex Web 应用程序中是如何工作的?
【发布时间】:2012-01-27 01:58:44
【问题描述】:

我是 Flex 的新手,想了解如何为从服务器重复请求的数据实现客户端缓存。

让我们专注于一个简单的例子来讨论缓存。以具有多个屏幕的 Flex 应用程序为例,其中每个屏幕绘制一个线系列(x 和 y 数据)。用户可以在屏幕之间切换,每次访问或重新访问屏幕时,都会从服务器请求 x 和 y 数据的数值数组。服务器上的 x 和 y 数据的值当然永远不会改变。

我想了解可用于在浏览器或 AIR 应用程序中实现缓存的可用技术,以便在第一次下载 x 和 y 数据后,应用程序在重新访问时从缓存中提取这些数组未来的屏幕。

这是怎么做到的?

【问题讨论】:

  • 你的问题不是很具体。没有适合所有情况的缓存策略。采用的策略将取决于您项目的要求,并且必须根据每个项目的项目进行评估。
  • 我把问题改得更具体了。我正在寻找更多的细节(例如代码)来实现缓存而不是定性策略。如果我想缓存一个从服务器下载的数组,该怎么做?
  • 嗨,ggk,Flex 应用程序是持久的。这意味着一旦应用程序运行,它会将所有对象保存在 RAM 中,并且仅在垃圾收集器出现并查找孤立对象(那些占用内存但应用程序没有对它们的任何引用的对象)时才释放它们。您可以将数据存储在 ArrayCollection 中,并在最初获取数据后随时引用它,只要用户不重新加载页面/swf。
  • 因此,何时发送请求以填充 ArrayCollection 完全取决于您,它本质上是“自动缓存”,尽管不是服务器正在缓存数据,而是它在客户端的内存中。通常缓存发生在客户端的硬盘上,而不是 Flex 你只是将它存储在 RAM 中,如果你想避免在重新加载后调用服务,你可以按照下面的建议将数据存储在本地共享对象中(序列化 ArrayCollection 并保存到磁盘,然后在启动时从 SharedObject 加载,为用户提供更新选项)。
  • 尽量不要将 Flex 应用程序视为标准 Web 应用程序。服务器没有生成“页面”。您在客户端有一个可以更改其视图状态的应用程序,但在您这样做时永远不会重新加载。通过服务按需加载数据。解决这个问题的方法更像是桌面应用程序而不是传统的网络应用程序。

标签: apache-flex


【解决方案1】:

这取决于您要缓存的内容。 Swf 由浏览器缓存。因此,每次浏览器指向您的站点时,都不会下载 swf。 如果您想记住用户之前在屏幕上键入的内容或自动完成或只是缓存非敏感数据,您可以使用 SharedObject。 然后总是有一种传统方式,将从服务器检索到的数据存储在 ArrayCollection 或内存中的其他对象中,并多次引用它。

【讨论】:

  • 我通过关注数字数组(例如)将问题更改为更具体。您能否扩展“将您从服务器检索到的数据存储在 ArrayCollection 或内存中的其他对象中并多次引用它的传统方式”?也许我的问题太简单了(我可能没有经验更了解)。但是这里的缓存是如何实现的呢?使用 ArrayCollection 时是否自动完成(在幕后)?等
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-13
  • 2014-07-16
相关资源
最近更新 更多