Flash 缓存问题的解决

      flash杂项 2004-7-24 14:47
最近搞了一个flash+CGI后台投票系统,开始老是显示不正常,最后终于找出规律,原来是FLASH当从外部数据源加载数据时,有时浏览器将数据存贮在本地缓存中,这样就导致在调用loadVariables方法加载数据时会从本地缓存中读取数据而代替从原始数据读取的信息。


//////////////////////////////////////
如何阻止从缓存中读取加载变量

问题:
当从外部数据源加载数据时,有时浏览器将数据存贮在本地缓存中,这样就导致
在调用loadVariables方法加载数据时会从本地缓存中读取数据而代替从原始数据
读取的信息。

解决:
为确保flash加载的是最新的变量,附加一个随机数变量,这样就可以原始档中加载最新的数据

例如:
方法一:
loadVariables("mypage.asp?nocache=" + random(65000), 0, "POST");

方法二:
loadVariables("mypage.asp?nocache=" + getTimer(), 0, "POST");
这样确保每次加载的数据是最新的.

///////////////////////////////////////////////////
另一个问题是要是swf文件是最新的,不是从缓存读取

使用以下的方法,使SWF文件强制不从浏览器读本地的缓存。或强制其SWF文件每次都去 读取最新的媒体文件

确保每次都读取最新的SWF文件。

1:使用"Expires"标头 这是在HTML文件中告诉浏览器不读取本地缓存
在<head> </head> 中间加以下代码
<!-- BEGIN INSERT -->
<META HTTP-EQUIV="Expires" CONTENT="Mon, 04 Dec 1999 21:29:02 GMT">
<!-- END INSERT -->
这样的话,每次访问这个文件都会告诉浏览器其缓存版本过期,将重新从服务器端读取最新的文件

2:直接告诉浏览器根本就没有缓存
在包含SWF文件的HTML页面里的</body>插入:
<!-- BEGIN INSERT -->

<HEAD>
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
</HEAD>

<!-- END INSERT -->
没有Cache标头 不支持IE5版本,所以微软建议使用带Cacahe控制标头

3:当在HTML页面间连接跳转时
在点击超连接时将强制其从服务器上下载最新文档而不是从本地缓存中浏览

例如:
<A HREF="stockPrices.htm?1">Current stock prices</A>

以上方法将阻止读取本地缓存

标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}
}