昨天内测
九天音乐格子遇到一个问题,如何让 Flash 获取的 xml 始终为最新数据,避免从缓存读取?
同事提醒我在加载文件后面加时间戳属性,突然想起经典上有篇老文 Flash 缓存问题的解决,提到用 getTimer() 或者 random() 来添加 url 属性,于是用 getTimer(),果然解决问题。
昨晚和 灰昼兄 交流此事,过后我想到一些问题。
随机数即使再大也有可能重复,我之前使用 getTimer() 其实重复率是很高的,因为 getTimer() 计算的是 Flash 运行之后所经过的毫秒数,如果是在 Flash 运行之后开始计算,几乎不可能重复,然而那没有任何意义,用户刷新后,又将是从零开始计算,重复率相当高,我在本地测试,大致相当于取100以内的随机数。
然后我想到了用 getTime() 应该才是最完美的。返回自 1970 年 1 月 1 日午夜(通用时间)以来的毫秒数。
var my_date = new Date();
var my_XML = new XML();
my_XML.load("musicWall.xml?nocache="+my_date.getTime());
此方法为真正意义上的时间戳,比 getTimer() 和 random() 都要精确,推荐使用。
同事提醒我在加载文件后面加时间戳属性,突然想起经典上有篇老文 Flash 缓存问题的解决,提到用 getTimer() 或者 random() 来添加 url 属性,于是用 getTimer(),果然解决问题。
昨晚和 灰昼兄 交流此事,过后我想到一些问题。
随机数即使再大也有可能重复,我之前使用 getTimer() 其实重复率是很高的,因为 getTimer() 计算的是 Flash 运行之后所经过的毫秒数,如果是在 Flash 运行之后开始计算,几乎不可能重复,然而那没有任何意义,用户刷新后,又将是从零开始计算,重复率相当高,我在本地测试,大致相当于取100以内的随机数。
然后我想到了用 getTime() 应该才是最完美的。返回自 1970 年 1 月 1 日午夜(通用时间)以来的毫秒数。
var my_date = new Date();
var my_XML = new XML();
my_XML.load("musicWall.xml?nocache="+my_date.getTime());
此方法为真正意义上的时间戳,比 getTimer() 和 random() 都要精确,推荐使用。