zoukankan      html  css  js  c++  java
  • Adobe AIR简单的缓存技术

    为了解决网络加载数据缓慢提高用户体验,如何解决这个问题,有两种思路。

    Pointillism最近发布的移动app,解决了那些边远地域[remote area]的用户使用游戏的问题。
    一是预加载游戏可能会用到的所有内容。

     要么将所有数据/图片与应用一同打包,要么强迫用户在启动App的时候立即下载相关数据。

    另一种方法是部署某种形式的缓存策略

    图片缓存超简单,Dan Florio (PolyGeek)写了个名为ImageGate的组件,实现了Image组件和缓存机制。这个组件很好上手,只要在你MXML或ActionScript中将<s:Image>替换为他的组件即可。这样一来,查看的图像就会被缓存。我将他的组件做了些调整,发在了我的Apache空间上。我将Image组件替换为BitmapImage,并在iOS设备上的适当位置增加了一个小补丁以支持图片缓存。

    缓存数列难度不会提升太大。AIR有个内置的“写入磁盘”功能——SharedObjects。SharedObjects最初是作为替代浏览器中cookie的存在,而在AIR里帮助我们将变量长期存储。每当有数据从服务器返回,我变将它作为SharedObject存储起来。这是一个非常好的策略,允许我们即刻显示旧数据并在当下实时更新新数据。我们的数据的更改并没有那么频繁,最多可能就只是一天更新一次罢了。

    选一个数据管理器的构造函数来看:

      

    View Code
    1 so = SharedObject.getLocal("org.pointi.cache");
    2 if (so.data.pointsList == null)
    3 {
    4 so.data.pointsList = new Array();
    5 so.flush();
    6 }

    服务器返回数据时,进行:

    View Code
    1 so.data.pointsList[curHuntID] = event.result as ArrayCollection;
    2 so.flush();

    最后,当我们想读回数据,以下就是所有需要做的(pointsList是一变量,要发送到我们所要调用的组件):

    View Code
    1 ro.getPointList(huntID, userID); //call the remote function on the server
    2 if (so.data.pointsList[huntID] != null)
    3 {
    4 pointsList = so.data.pointsList[huntID] as ArrayCollection;
    5 }

    对所有数列做类似的设置,我们就可以保持服务器与客户端同步。

     

     

  • 相关阅读:
    基于Servlet+JSP+JavaBean开发
    jsp&servlet报红线javax.servlet.jsp.XXXX cannot be resolved to a type类似错误解决办法
    java为什么要定义接口等相关解释
    SpringMVC的注解方式
    MyBatis映射
    hibernate、JDBC 实现 oracle ID 的自动增加 功能
    SSH框架的JSP网站添加数据为什么没反应
    又考完一科 又过完一年
    一个招标书文件的需求分析
    《需求分析》读后感之二
  • 原文地址:https://www.cnblogs.com/ztdy/p/2731749.html
Copyright © 2011-2022 走看看