Nevill’s Blog

blog my living stuff

  • April 2008
    M T W T F S S
    « Feb   Jun »
     123456
    78910111213
    14151617181920
    21222324252627
    282930  

Flash 缓存问题解决办法

4月9日, 21:35

使用Flash请求资源的时候经常会碰到缓存的问题。这里分两种情况讨论:

1)被请求的资源是数据内容(XML或者JSON等文本数据)被缓存
比如:使用 URLLoader 请求一个 XML 数据 http://localhost/test.xml
这个时候在 IE 的缓存目录(通常在\Documents and Settings\{User}\Local Settings\Temporary Internet Files)产生一个与http://localhost/test.xml对应的缓存文件,用来保存test.xml返回的内容,以后每次请求URLLoader都返回这个文件内容。
Adobe 的知识库中有一个解决办法是给请求的资源加上一个随机数做参数:

loadVariables("mypage.asp?nocache=" + random(65000), 0, "POST");
myXML.load("path.xml" + "?" + Math.random());

看具体内容在这里
如果能控制服务器的话,可以通过设定Http头的Cache-Control属性为no-cache来解决

response.setHeader("Cache-Control", "no-cache");

如果是Java Web App可以做一个filter专门来映射那些需要不被缓存的请求的资源,比如,在web.xml中做如下设定

<filter>
<filter-name>CacheControlFilter</filter-name>
<filter-class>net.nevillblog.flash.app.filter.CacheControlFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CacheControlFilter</filter-name>
<url-pattern>/xml/*</url-pattern>
</filter-mapping>

2).swf文件本身被缓存
在 Adobe 的知识库谈到的解决办法是在HTML里面设定Expires参数和No-Cache参数,
具体内容看这里
这个方法的不足之处是会导致整个html页面都会被重新请求,实际只要是SWF文件重新被请求。
我的解决办法是通过设置Apache的mod_expires,设定让SWF文件不被缓存,原理其实是相同的(即设定Cache-Control属性)。
在Apache的配置文件中设置如下代码:

ExpiresActive On
ExpiresByType application/x-shockwave-flash "now 1 seconds"

当然还要记得启用mod_expires即可。

“Flash 缓存问题解决办法” 有 1条评论

  1. yy

    I don’t understand!!!!

添加评论

名称
(required)

电子邮件 (不会显示出来)
(required)

你的网站地址

  • :em01:
  • :em02:
  • :em03:
  • :em04:
  • :em05:
  • :em06:
  • :em07:
  • :em08:
  • :em09:
  • :em10:
  • :em11:
  • :em12:
  • :em13:
  • :em14:
  • :em15:
  • :em16:
  • :em17:
  • :em18:
  • :em19:
  • :em20:
  • :em21:
  • :em22:
  • :em23:
  • :em24:
  • :em25:
  • :em26:
  • :em27:
  • :em28:
  • :em29:
  • :em30:
  • :em31:
  • :em32:
  • :em33:
  • :em34:
  • :em35:
  • :em36:
  • :em37:
  • :em38:
  • :em39:
  • :em40:
  • :em41:
  • :em42:
  • :em43:
  • :em44:
  • :em45:
  • :em46:
  • :em47:
  • :em48:
  • :em49:
  • :em50:
  • :em51:
  • :em52:
  • :em53:
  • :em54:
  • :em55:
  • :em56:
  • :em57:
  • :em58:
  • :em59:
  • :em60:
  • :em61:
  • :em62:
  • :em63:
  • :em64:
  • :em65:
  • :em66:
  • :em67:
  • :em68:
  • :em69:
  • :em70:
  • :em71:
  • :em72: