2009-10-23 42 views
0

问候,有没有办法确定Flash是否缓存了一个对象?

我在写网络闪存应用程序。服务器(独立的C++应用程序)为Flash客户端发送资源来操作和/或显示图像和声音。我假设浏览器将这些资源存储在缓存中。由于资源可能很大,每次客户端重新启动应用程序时,我都不希望从服务器重新发送它们。我不能使用LSO(flash cookies),因为如果缓存被浏览器或用户独立清除,那么LSO就不会更新。

因此对于闪存大师.. 1)有没有办法检测一个项目是否已被缓存,例如查询浏览器缓存的crc或什么?也许加载屏幕外的对象,并(以某种方式)检测它是否显示? - 或 - 2)有什么办法可以避免使用普通的浏览器缓存并在某种较大的LSO中自行缓存?

感谢您的帮助。

回答

0

不,你不能。但是如果你有资源的预加载器,那么用户看到的东西正在加载它应该没问题。如果资源已经在缓存中,那么他们将不会看到预加载器,应用程序就会出现。并且对图像/声音的请求不会被发送到服务器,所以在那里没有流量。如果他们不在缓存中,他们将会看到预加载器,所以你就是在那里开始的。我看不出为什么你试图在你的情况下以任何方式操纵缓存。

+0

嗯,这里的问题是,资源没有存储在SWF或任何本地我可以预加载他们 - 他们直接从服务器(例如,在第一次运行),然后(我假设)得到填充在浏览器缓存中。我没有看到我能够检测到客户端是否真的有资源,因此它决定是否必须从服务器发出请求。 – flashnewb 2009-10-23 09:04:31

+0

是的。你可以显示一个预加载器来下载资源。如果你用flash给出的任何加载方法(urlloader,loader,无论什么)加载图像,你有进度和加载完成的事件,依此类推。您知道您需要下载多少资产,将进度条划分为该数字,并获取第一个资源。当完成时,增加进度条,并加载下一个等等。 – TheBrain 2009-10-23 09:26:47

+0

正如我的s/n所说,我是一个flash新手,请耐心等待我,因为我还没有得到它。我们来试试一个例子。假设您有一台非常基本的服务器,它只是通过套接字将图像发送到Flash客户端。客户端显示他们进来的图像。我想要做的是让服务器首先发送图像标识符(名称或校验和或其他),然后客户端可以用“我拥有它”或“发送”。客户如何确定这一点? – flashnewb 2009-10-23 09:32:22

相关问题