最近在Google Reader里面看到的,一日本人在blog上提出来的,他还有一个示例页面,这里是Demo下载地址。不过在看到这篇文章之前,我就已经在我们的项目(PPLive iKan 1.0)中用过了,其中的观看历史记录就是使用的Flash来进行存取的。
其实Flash在JavaScript应用程序中当“幕后英雄”的例子早就有过了,最先是为了解决用JavaScript复制文本的问题,用Flash这可以轻而易举地解决跨浏览器问题。我之所以想到用Flash来存储观看记录是因为我觉得用Flash来保存更有优势:
存储方式可靠
JavaScript中存储本地数据的常见方式是使用Cookie,还一种方式是使用UserData。写Cookie的方式也很可靠,读写都非常的容易,但是UserData有时候却不是那么可靠,不知道为什么有时候清理Cookie都会带来莫名奇妙的问题,造成UserData无法写入或者无法读取的情况,很诡异。
存储空间够大
JavaScript的Cookie容量是以网站根域为限制的,IE8允许的每个域的数量是50个(IE7貌似也允许50个,IE6是20个),Firefox也是50个,每个Cookie的大小最大为4K。而使用Flash存储数据则不一样,数据可以根据路径来分开存储,而且每个存储的默认值都是10K,不够还可以向用户申请,没有上限。
数据不易被用户清空
Cookie实在是太容易被清理掉了,不过Flash存储数据的目录就非常诡异了,一般还是很难找到的,而且用户不知道你用的Flash存储的,更是没办法找到数据在哪了,绝对安全。但是如果用户有需求要清理掉的时候,你一定要为用户提供这个清理的功能。比如iKan上的列表都有删除观看记录的功能。PPLive上节目名字“诱人的”实在是太多了,难免会有人点过去,一不小心就被程序记录了,总不能让别人也看到,还是需要清理的~
不过那日本人的方法在我看来很不完美,不过我的方法现在也不够完美,但是比他提供的接口更多更灵活,使用也和他的一样简单,在绝大多数(我的方法在95%以上)时候还是能用的,等有机会再弄一个好的版本吧。