共享对象功能就像浏览器的cookie。你可以使用SharedObject类来在用户的本地磁盘上保存数据,并且在当前的会话或之后的会话中调用那些数据。程序祝你能访问它们自己的SharedObject数据,并且只能在他们欲行在相同的域的时候可以。这些数据不会被发送到服务器,并且不能被运行在其他域下的Flex曾需访问,但是可以来自同一域中的Flex程序访问。
比较共享对象与Cookie
Cookie和共享对象都非常简单。因为大多数web程序员都很熟悉cookie的工作原理,这有助于对比cookie和本地共享对象。
Cookie遵循RFC 2109标准生成,并且拥有下列属性:
它们可以过期,通常默认在会话结束时过期;
它们可以被禁用;
最多可以有300个Cookie,并且每个站点最多可以有20个cookie;
每个Cookie通常被限制在4k大小;
某些情况下,它们会被认为是安全隐患,因而在客户端被禁用;
它们存储在由客户端浏览器指定的位置;
它们通过HTTP协议从客户端传递到服务器。
作为比照,共享对象有如下属性:
默认情况下不会过期;
默认情况下,它们被限定在每个100K大小;
它们可以保存简单数据类型(例如String,Array和Date);
它们被保存在由程序定义的位置(在用户的主目录下);
它们永远不会从客户端传递到服务器。
关于SharedObject类
使用SharedObject类,你可以创建和删除共享对象。SharedObject类包含下列方法:
方法 |
描述 |
clear() |
删除SharedObject中的所有数据,并且从磁盘中删除SharedObject。 |
flush() |
立即向客户端写入SharedObject |
getLocal() |
返回客户端域定义的本地共享对象的引用。如果不存在共享对象,这个方法将创建一个新的共享对象。 |
getSize() |
获得共享对象文件的大小。默认上线是100k,如果客户端允许,还可以更大。 |
除了这些方法外,共享对象还有下列属性:
属性 |
描述 |
data |
描述了共享对象保存的属性集合的只读属性 |
onStatus |
共享对象的事件处理器 |
创建一个共享对象
要创建一个SharedObject对象,可以使用SharedObject.getLocal()方法,语法如下:
SharedObject.getLocal("objectName" [, pathname]): SharedObject
下列例子创建了一个叫做mySO的共享对象:
public var mySO:SharedObject;
mySO = SharedObject.getLocal("preferences");
这将在客户端创建一个叫做preferences.sol的文件。