本地存储和远程存储各有优点,也各有不足:
(1)本地存储的数据共享对象,获取这些数据不必连接远程服务器,而且读取和操作时,不必考虑网络传输的风险和延迟。对于频繁的数据交换,也不会出现明显的加载等待。
但是本地存储不利于机器之间的数据共享,也不能保证操作系统之间的数据共享。用户数据缺乏统一的管理和备份,丢失风险很大。
(2)远程存储的数据共享对象不必依赖于客户端的操作系统,可以自由的在多个计算机之间使用,成为点对点的中继站。
但是用户使用远程数据共享对象,必须保证网络连接。无论是基于互联网还是局域网的网络连接,都将限制Flash应用的移动性。网络传输的不稳定也不利于程序的平稳运行。
ActionScript 3.0提供了双重的存储机制。在使用远程数据存储时,可以设置相应的参数,指定共享对象的数据属性的特性是本地永久储存还是远程永久储存;或者是同时进行本地永久储存和远程永久储存,建立远程和客户端的双向副本。
getRemote()方法包含四个参数:
Ø name:String—对象的名称。
Ø remotePath:String(default=null)—将存储共享对象的服务器的URI。
Ø persistence:Object(default=false)—存储策略。
Ø secure:Boolean(default=false)—安全策略,此共享对象是否只限于通过HTTPS连接的访问。
其中的persistence参数确定了数据共享对象的存储策略。此参数不是一个单纯的布尔类型数据,而是通用对象类型,因此可接受的值不仅是不二类型的true或false,还可以是数据共享对象的本地存储位置。具体取值的含义如下:
Ø false,指定客户端或服务器上的共享对象不是永久性的。
Ø true,指定只有服务器上的共享对象是永久性的。
Ø 共享对象的完整路径或部分路径,客户端的共享对象存储在指定路径中,而服务器中的共享对象则存储在应用程序目录中的子目录内。此时不需要特别说明,客户端和服务器上的共享对象将是永久性的。
总而言之,只有当persistence参数为false时,服务器端数据共享对象才被认为是非永久的,其他的取值都默认将存储期限设置为永久。双重存储机制中,服务器端扮演了规范和标准的脚色,应该以服务器端的数据共享对象为核心,保持本地文件与服务器端的同步。这样才能发挥远程数据共享文件的跨平台,跨地址的优势。
persistence参数的实际效果需要视客户端的用户设置而定。一般而言,服务器端不会无故禁止此类存储。但是如果用户已选择了不允许本地存储数据共享对象,则即使将persistence参数指定为永久性本地存储,在执行时也不会在本地保存数据共享对象。