页游中资源版本更新问题之解决方案

因为很多浏览器的缓存非常顽固,比如IE浏览器,所以在页游中经常会出现一个资源无法及时更新的问题。

比如你更新了背包的资源,是一个swf资源,你把它上传到服务器下面。可是因为缓存的原因,页游运行过程中可能还会运行老的背包swf资源,这样就出现了无法及时更新的问题。

业内常见的解决方案是使用版本号:

1,首先你要新建一个资源xm,里面放的是是各个资源(比如背包swf资源)的版本号,比如1.0。

<?xml version="1.0" encoding="UTF-8"?>

<info>

<assets name="背包">

<version>1.0</version>

</assets>

<assets name="res2">

<version>1.0</version>

</assets>

</info>

2 ,在主swf里加载上面这个xml,这样可以获取到最新的资源的版本号。因为你需要保证你加载的该资源xml是最新的(xml的数据是会经常更新的。因为项目上线后,素材资源经常会出现更新,所以版本号也要更新),所以你在加载该xml的时候,需要这么写,private var xmlUrl:String ="assets/version.xml"+"?"+Math.random();红色部分可以保证你加载的xml是最新的,避免缓存问题。

4,资源加载时,注意:url2="assets/pack.swf"+"?v"+version;(version这个值是从上面的xml里获取的)

var request:URLRequest = new URLRequest(url2);

3,当你需要更新资源时候,先修改上面xml里对应资源的版本号(比如v2.0,v3.0),然后修改把最新的资源swf,和该xml一起上传到服务器下,这样就可以解决缓存使你无法及时更新资源的问题了。

ok,讲到这儿了,我做了个示例,可惜csdn现在无法在这儿上传项目附件。下面是主要代码:

package {

import flash.display.Loader;

import flash.display.Sprite;

import flash.events.*;

import flash.net.URLLoader;

import flash.net.URLRequest;

import flash.text.TextField;

public class TestLoader extends Sprite {

private var str:String="?v";

private var url2:String = "assets/1.swf";

private var xmlUrl:String ="assets/version.xml"+"?"+Math.random();

private var xmlUrl2:String ="assets/version.xml";

private var urlLoader:URLLoader;

private var curResVersion:String;//资源版本

private var userVersion:String;

private var userXmlUrl:String;

private var isUseXmlVersion:Boolean=true;//是否使用xml版本控制

public function TestLoader() {

urlLoader=new URLLoader;

if(isUseXmlVersion)

{

userXmlUrl=xmlUrl;

}

else

{

userXmlUrl=xmlUrl2;

}

var xmlUrlRequest:URLRequest=new URLRequest(userXmlUrl);

urlLoader.load(xmlUrlRequest);

urlLoader.addEventListener(Event.COMPLETE,xmlLoader);

}

private function xmlLoader(event:Event):void

{

var myxml:XML=new XML(urlLoader.data);

curResVersion=myxml.child("assets")[0].version;//显示我们的版本值

var loader:Loader = new Loader();

configureListeners(loader.contentLoaderInfo);

url2=url2+str+curResVersion;

var request:URLRequest = new URLRequest(url2);

loader.load(request);

addChild(loader);

var text:TextField=new TextField;

text.width=300;

var txt:String="";

if(userXmlUrl==xmlUrl)

{

txt="使用了xml版本控制";

}

else

{

txt="没有使用xml版本控制";

}

text.text=txt+",资源版本:"+url2;

this.addChild(text);

}

private function configureListeners(dispatcher:IEventDispatcher):void {

dispatcher.addEventListener(Event.COMPLETE, completeHandler);

}

private function completeHandler(event:Event):void {

trace("completeHandler: " + event);

}

}

}

时间: 2024-11-04 05:44:46

页游中资源版本更新问题之解决方案的相关文章

页游中常见的游戏元素位置自适应浏览器大小变化之解决方案

在玩页游中,很常见的一个功能是,当你改变浏览器的大小时,页游中一些元素位置比如聊天框等会自动随着浏览器变化而变化,该功能如何实现了? 哈,解决方式是:监听舞台变化,获取变化后的舞台宽高(stage.stageWidth,stage,stageHeight),然后根据新的舞台宽高,再改变舞台上各个元素的位置. 上代码测试: <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx=&

as3 页游中,新手指导中,屏蔽所有交互对象,但除了指定交互对象可用的方法【转http://blog.csdn.net/linjf520/article/details/9450945】

package { import flash.display.InteractiveObject; import flash.display.Stage; import flash.events.MouseEvent; /** * 新手指导管理器 * @author jave.lin * @date 2013-7-24 */ public class GuideManager{ private static var stage:Stage; /**设置舞台*/ public static fun

页游资源的管理方法

1.   配置文件压缩 页游需要10几,20几个配置文件这是很常见的,配置文件现在流行使用xml格式.可以通过压缩软件打包,flash通过二进制方式加载压缩包之后解压使用.这样一方面减少连接请求数:另一方减少了流量. 2.   资源细化分离,按需加载 分离各类模块和素材(图片.swf文件),方便实现按需加载.整个游戏的资源size很大,但是进入游戏往往并不需要所有的资源.这样我们可以分离各类模块和素材,所有资源通过配置文件管理.整理出进入游戏需要的必加载资源,剩余资源只在需要的时候再加载,以减少

手游、页游和端游服务端的架构与区别

GameRes游资网发布, 文 / 韦易笑 手游页游和端游的服务端本质上没区别,区别的是游戏类型. 类型1:卡牌.跑酷等弱交互服务端 卡牌跑酷类因为交互弱,玩家和玩家之间不需要实时面对面PK,打一下对方的离线数据,计算下排行榜,买卖下道具即可,所以实现往往使用简单的 HTTP服务器: 登录时可以使用非对称加密(RSA, DH),服务器根据客户端uid,当前时间戳还有服务端私钥,计算哈希得到的加密 key 并发送给客户端.之后双方都用 HTTP通信,并用那个key进行RC4加密.客户端收到key和

前端工程精粹(一):静态资源版本更新与缓存

本文从一个全新的视角来思考web性能优化与前端工程之间的关系,通过解读百度前端集成解决方案小组(F.I.S)在打造高性能前端架构并统一百度40多条前端产品线的过程中所经历的技术尝试,揭示前端性能优化在前端架构及开发工具设计层面的实现思路. 性能优化原则及分类 笔者先假设本文的读者是有前端开发经验的工程师,并对企业级web应用开发及性能优化有一定的思考,因此我不会重复介绍雅虎14条性能优化原则.如果您没有这些前续知识,请移步这里来学习. 首先,我们把雅虎14条优化原则,<高性能网站建设指南>以及

手游页游和端游的服务端的架构与区别

转自:http://www.gameres.com/336666.html 手游页游和端游的服务端本质上没区别,区别的是游戏类型. 类型1:卡牌.跑酷等弱交互服务端 卡牌跑酷类因为交互弱,玩家和玩家之间不需要实时面对面PK,打一下对方的离线数据,计算下排行榜,买卖下道具即可,所以实现往往使用简单的 HTTP服务器: 登录时可以使用非对称加密(RSA, DH),服务器根据客户端uid,当前时间戳还有服务端私钥,计算哈希得到的加密 key 并发送给客户端.之后双方都用 HTTP通信,并用那个key进

妖哲的日常3 QA前线——讨伐!全自动页游

今天下载了一个微端页游,算是讨伐QA之路的第一步. 登入篇 宣传界面 传统页游都这个套路,美女波霸--反正就是谁大谁用户多的时代.但是这尼玛前端设计师也好歹仔细设计一下自适应好嘛?作为一个第一次接触页游的玩家,我这第一印象就不是很好 好端端的界面突然却变成了画中画....再怎么漂亮的女神也改变不了"这是一款残次品的"的第一印象. 而且这个界面里的美女不会动,没有特效动画,开始游戏的按钮反馈也不强,反正媳妇没过门,就已经很嫌弃了. 恐怕光是这个原因就足够流失许多用户了. 注册画面 然后就

unity之手游大势之下 端游、页游的突围之道

欢迎来到unity学习.unity培训.unity企业培训教育专区,这里有很多Unity3D资源.Unity3D培训视频.Unity3D教程.Unity3D常见问题.Unity3D项目源码,[狗刨学习网]unity极致学院,致力于打造业内unity3d培训.学习第一品牌. 狗刨学习网报道 / 根据艾瑞的数据,近两年,手游行业高速发展,到了2014年中国移动游戏市场规模达到276亿,同比增长86%,可以说手游用2年时间走完了端游10年的路.翻看近半年来的新闻,几乎鲜有关于端游或页游的报道.但本着存

主流游戏引擎分析 【端游 、页游 、手游 解析】

该分享仅供参考,目的是提升大家对游戏引擎方面的一些认知.文档中部分内容收集于互联网,若有内容不准确,还请告知. 关于本文PPT文档:github 一.介绍 游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些互交式实时图像应用程序的核心组件.这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程序而不用由零开始.大部分都支持多种操作系统平台,如Linux.Mac OS X.微软Windows.游戏引擎包含以下系统:渲染引擎(即"渲染器",含二