加载外部数据时Flash CS4 IDE内部缓存

时间:2010-08-12 16:20:47

标签: flash caching flash-cs4

从服务器URLVariables中检索外部变量时,我的Flash卡在第一个编译值上。每当我更新服务器值时,flash都会编译第一个旧值。只有在我重新启动CS4后,IDE值才会更新。是否有内部缓存?

我的代码没有任何问题,因为它可以在我的Mac上正常工作,但不能在PC上工作。

2 个答案:

答案 0 :(得分:3)

它们存储在系统的“Temporary Internet Files”缓存中(即I.E.的缓存)。我将Firefox作为我的默认浏览器,但它们仍然存储在“ AppData \ Local \ Microsoft \ Windows \ Temporary Internet Files \ Content.IE5 ”子文件夹中。

以下是我如何确定这一事实。我首先通过将HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ FileSystem \ NtfsDisableLastAccessUpdate设置为零并重新启动计算机,在Windows 7中重新启用NTFS Last-Access-Time更新。然后我打开Visual Studio并创建了一个程序,其中的FileSystemWatcher实例的配置如下面的代码所示:

FileSystemWatcher watcher = new FileSystemWatcher( "C:\\", "*.swf" );
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite;
watcher.Changed += new FileSystemEventHandler(watcher_Changed);
watcher.IncludeSubdirectories = true;
watcher.EnableRaisingEvents = true;

接下来,我在Flash CS6中测试了一个程序,该程序从远程服务器加载外部SWF文件。它使用URLLoader类首先获取文件的字节,然后调用Loader实例的loadBytes方法来加载SWF的字节。 (使用URLLoader是一种绕过本地安全沙箱限制的解决方法,否则会阻止远程代码加载到本地SWF的同一应用程序域和安全域中;这是我的代码库的要求,因为远程SWF使用定义的类在本地容器SWF)。

“watcher_Changed”事件处理程序列出了Flash IDE的播放器访问或写入的文件,这就是出现的情况。

我的容器SWF “basemovie3.swf”(主项目文件)是从目录加载的:

"C:\Users\[your_username]\AppData\Local\Adobe\Flash CS6\en_US\Configuration\CodeModel\cm-cache\SwcCache\basemovie3.swc1272273593\library.swf"

从目录中加载了远程SWF “l003s.swf”(有问题的缓存):

"C:\Users\[your_username]\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\IGH0THHW\l003s[1].swf"

所以你有它。远程加载的SWF是从Temporary Internet Files缓存加载的。

尽管将“?random = randomnumber& timestamp = currenttime”形式的查询字符串附加到远程加载文件“l003s.swf”的URL,但文件系统观察者报告对所有SWF文件都没有写入,尽管尝试了使用不同的查询字符串多次加载文件,并在服务器上更新文件后再尝试一些。

清除文件的最佳方法似乎是打开开始菜单并输入“Temporary”,您可以点击“更改临时Internet文件设置”,“删除cookie或临时文件”中的任何一个选项,或者“删除浏览历史记录”。他们都将带您进入Temporary Internet Settings窗口,您可以在其中删除浏览历史记录和缓存。

答案 1 :(得分:2)

这纯粹是猜测,但我怀疑Flash正在通过操作系统发出请求,结果正在其他地方缓存。无论哪种方式,解决此类问题的一种常见方法是在请求中附加无意义的变量 - 例如从server.com/script.php?random=209327加载数据,其中数字当然是随机的。这样,每个请求的URL都不匹配任何先前的请求,并且您没有获得缓存结果。