关于网页中缓存swf的问题

来源:互联网 发布:做网站是否用数据库 编辑:程序博客网 时间:2024/05/21 17:02

大家都知道浏览器会自动缓存网页中的swf文件,这样网页刷新后不需要再次加载这个文件,减少了对服务器的请求,加快了网页开启的速度。。。随然好处是不言而喻的,但有时也会给我们带来一些麻烦。

 

比如,为了效果,网页的导航是用FLASH来做的,即然是导航,免不了要加链接跳转。

导航中新闻栏目下有两个子栏目:

“公司新闻”,链接为http://87cool.com/news/newsList.aspx?type=1,

“业内新闻”,链接为http://87cool.com/news/newsList.aspx?type=2,

在newsList.aspx页面中,使用Request.QueryString["type"]获取URL中传过来的参数type,然后决定是显示"公司新闻"还是"业内新闻"。

 

OK,场景布置完毕了,接下来说明flash导航缓存后会导致的问题:

当第一次点击flash导航中的"公司新闻"时,newsList.aspx页面中Request.QueryString["type"]的结果是1,然后从数据库中读取所有"公司新闻"并显示出来。一切正常!!

当再次点击"公司新闻"时,问题出现了。。。newsList.aspx页面中Request.QueryString["type"]的结果是null,表示根本没有在URL中获取到type,type不存在,这样也就无法判断是要显示 "公司新闻" 还是 "业内新闻"。

 

是谁导演了这场杯 具呢?

没错,是浏览器!

那又是谁主演了这场杯 具呢?

没错,是缓存!

 

起初,我也是对这个问题百思不得其解,后来抓包分析,才恍然大悟。原来flash被缓存后,非第一次点击里面的链接,根本不会向服务器发送请求,也就是说再次点击"公司新闻"时,newsList.aspx的page_load根本不会执行。由此可以推断,FLASH里链接所指向的页面被执行一次后,也被缓存起来了。

 

知道了病根,就可以对症下药了。

 

既然被缓存了,那就清除缓存。虽清除缓存后会使页面加载的稍慢一点,然别无它法,就只能这样处理了。

 

在ASP.NET中清除缓存:

Response.Cache.SetCacheability(HttpCacheability.NoCache);

或者

Response.CacheControl = "no-cache";

将以上任意一句加到page_load()里即可。

原创粉丝点击