彻底解决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>
以上方法将阻止读取本地缓存


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

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

解决:
为确保flash加载的是最新的变量,附加一个随机数变量,这样就可以原始档中加载最新的数据
例如:
方法一:
loadVariables("mypage.asp?nocache=" + random(65000), 0, "POST"; 

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

[补充]

然而在实践中,我取发现在页面含有SWF文件时使用MM提供的方法,有时不是很灵验。
经过不断的测试,我发现使用一下的方法可以百分之百的解决flash读取本地缓存的问题
首先我们来看看页面中包含flash文件的代码:

<object classid="clsid27cdb6e-ae6d-11cf-96b8-444553540000" codebase=" http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="550" height="400" align="middle"> 
<param name="allowScriptAccess" value="sameDomain" /> 
<param name="movie" value="waizi.swf" /> 
<param name="quality" value="high" /> 
<param name="bgcolor" value="#ffffff" /> 
<embed src="waizi.swf" quality="high" bgcolor="#ffffff" width="550" height="400" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage=" http://www.macromedia.com/go/getflashplayer" /> 
</object>

其红色的部分就是代表你要调用的flash 资源。我们可以简单的在其后附加一个变量就可以强制页面每次都从服务器端调用最新的SWF文件。

例如:xxxx.swf?rand=12334567

方法一: 如果是HTML页面,其不能自动改变变量的值,所以当你的SWF文件修改后上传服务器,你只要手工修改rand变量后面的数值就可以防止页面读取本地的SWF文件信息。

方法二: 如果你的页面是asp,php动态页面,则可以通过脚本来实现其动态修改变量值。

例如在asp页面中,使用vbscript产生一个随机数
<%
dim num
Randomize
num=Int((1000000*Rnd)+1)
%> 

然后在你那一堆置入SWF文件的代码中,找到SWF文件名,并修改其为:
<param name=movie value="****.swf?rand=<%=num%>">
embed src="****.swf?rand=<%=num%>" 
记住是两个地方,因为其适用于不同的浏览器。

如果使用javascript可以这样:

<script language="JavaScript"> 
function Rand(){ 
var Num=Math.floor(Math.random()*1000000); 
document.write(Num); 

</script>

然后在调用flash代码的地方修改为:

****.swf?rand=<script language="JavaScript">getRand();</script>

记得是一般要改两个地方。一个<object>用于IE的 一个<embed>用于非IE浏览器的
现在想想有了问题,第一个寻找答案的地方就是去adobe网站上查询。 
分类:  其他

本文转自快乐就好博客园博客,原文链接:http://www.cnblogs.com/happyday56/archive/2007/11/01/946240.html,如需转载请自行联系原作者
相关文章
|
存储 缓存 JSON
浏览器的缓存方式几种
浏览器缓存方式主要包括:1. **强制缓存**,通过 `Expires` 或 `Cache-Control` 控制,缓存有效期内不发起请求;2. **协商缓存**,使用 `ETag` 和 `Last-Modified` 判断资源是否更新;3. **Service Worker 缓存**,适用于 PWA 应用,拦截并返回缓存;4. **浏览器存储**,如 LocalStorage、SessionStorage 和 IndexedDB,用于持久化或会话级数据存储;5. **Push Cache**,仅限 HTTP/2,服务器主动推送资源。选择合适的缓存策略可优化性能和用户体验。
914 143
|
缓存 监控 测试技术
如何利用浏览器的缓存来优化网站性能?
【10月更文挑战第23天】通过以上多种方法合理利用浏览器缓存,可以显著提高网站的性能,减少网络请求,加快资源加载速度,提升用户的访问体验。同时,要根据网站的具体情况和资源的特点,不断优化和调整缓存策略,以适应不断变化的业务需求和用户访问模式。
884 63
|
Web App开发 缓存 UED
如何设置浏览器的缓存策略?
【10月更文挑战第23天】通过合理地设置浏览器的缓存策略,可以在提高网页性能、减少网络流量的同时,确保用户能够获取到最新的内容,从而提升用户体验和网站的性能优化效果。
1539 60
|
存储 缓存 JSON
vue2知识点:浏览器本地缓存
vue2知识点:浏览器本地缓存
265 2
|
存储 缓存 边缘计算
高并发架构设计三大利器:缓存、限流和降级问题之控制浏览器缓存的行为问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之控制浏览器缓存的行为问题如何解决
229 2
|
域名解析 存储 缓存
HTTP请求流程概览:浏览器构建请求行含方法、URL和版本;检查缓存;解析IP与端口
【6月更文挑战第23天】 HTTP请求流程概览:浏览器构建请求行含方法、URL和版本;检查缓存;解析IP与端口;TCP连接(HTTP/1.1可能需排队);三次握手;发送请求头与体;服务器处理并返回响应;TCP连接可能关闭或保持;浏览器接收并显示响应,更新缓存。HTTP版本间有差异。
540 5
|
缓存 网络协议 前端开发
浏览器访问缓存都发生了什么
浏览器访问缓存都发生了什么
166 0
|
缓存
浏览器的缓存策略
浏览器的缓存策略
249 0
|
存储 缓存 算法
如何获取浏览器定位信息存储到浏览器缓存中?
如何获取浏览器定位信息存储到浏览器缓存中
288 0
|
缓存 Android开发 iOS开发