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

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

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


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


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

这是我如何确定这个事实。 我首先通过将HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Control FileSystem NtfsDisableLastAccessUpdate设置为零并重新启动计算机来重新启用Windows 7中的NTFS最后访问时更新。 然后,我打开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]AppDataLocalAdobeFlash CS6en_USConfigurationCodeModelcm-cacheSwcCachebasemovie3.swc1272273593library.swf"

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

"C:Users[your_username]AppDataLocalMicrosoftWindowsTemporary Internet FilesContent.IE5IGH0THHWl003s[1].swf"

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

尽管将“?random = randomnumber&timestamp = currenttime”格式的查询字符串附加到远程加载的文件“l003s.swf”的URL中,但文件系统观察器尽管尝试加载文件多次但仍报告没有写入任何SWF文件时间与不同的查询字符串以及更新服务器上的文件之后的一些更多尝试。

看起来清除文件的最好方法是打开你的开始菜单并输入“Temporary”,你可以点击任何选项“更改临时Internet文件设置”,“删除Cookie或临时文件”或“删除浏览历史”。 他们都会将您带到临时Internet设置窗口,您可以在其中删除浏览记录和缓存。

链接地址: http://www.djcxy.com/p/2941.html

上一篇: Flash CS4 IDE internal cache when loading external data

下一篇: Flash CS4 <b> tag in with htmlText