• 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 }

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

     

     

  • 相关阅读:
    「Gym100025D」Automaton
    CF 紫色典题
    P8255 [NOI Online 2022 普及组] 数学游戏(民间数据) 题解
    numpy库 数据量太大出现Memory Error问题的解决方法汇总
    pycryptodome(Crypto) 安装
    六、容器Treeset排序
    5.Collections的sort方法进行排序
    四、冒泡+排序
    一、爬虫
    七、其他容器先进先出FIFO和后进先出LIFO
  • 原文地址:https://www.cnblogs.com/ztdy/p/2731749.html
Copyright © 2020-2023  润新知