【发布时间】: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