您的位置:首页 > 移动开发 > Cocos引擎

关于html5和cocos2d-html5缓存问题及解决办法

2014-09-24 15:29 405 查看
先说html5对应的缓存:

从html发展至今, 缓存各种各样, 要统一清除十分困难

1.网页缓存, 指访问对应的网页本身内的代码, 不清除, 网页内代码更新后, 网页始终不会被访问后的客户端更新

<META HTTP-EQUIV="pragma" CONTENT="no-cache">

<META HTTP-EQUIV="Cache-Control" CONTENT="no-store, must-revalidate">

<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">

<META HTTP-EQUIV="expires" CONTENT="0">

2.图片缓存, 一般指的是<img>内的图片, 也有可能来自其他位置, 或者css的图片, 在这里只提及img的处理方法, 给img一个id, 然后通过js来刷新它, 这也是比较方便的做法, 或者在这里使用documents.write来写入img标签

<img src="images/test.jpg" id="img_test" style="display:block;">

jQuery(function() {   
	$("#img_test").attr("src","images/test.jpg?version="+versionImg); 
});


一般我使用这个versionImg用于在图片更新后才进行修改版本号, 当然你也可以使用随时变化的Math.random(), 这样的话, 图片就完全不被缓存了, 但是这样对服务器负担比较大, 不建议采用

3.js缓存和css缓存, 导入的js和css都会被当成静态不变的文档处理, 来加快再次访问网页的速度, 但是, js作为灵活的脚本, 更新在所难免, 所以这时候需要对js进行很好的缓存控制

document.write('<scri'+'pt src="js/jquery-1.8.2.js?version='+versionJs+'" type="text/javascript"></s'+'cript>');
使用这个写法, 能将变量值写到js访问网址内, 直接写的话, 是不被允许的, 虽然可以直接写死版本号, 但是如果你的页面版本文件过多, 控制起来相当麻烦, 还是统一进行管理干涉比较好

4.当然了, cocos2d.js的方法和上面一样

document.write('<scri'+'pt src="js/cocos2d.js?version='+versionJs+'" type="text/javascript"></s'+'cript>');


5.cocos2d-html5的js缓存, 这个很好修改, 只要在打包好的package.js后加缓存就好了, 别告诉你不知道如何打包, 使用ant很方便,

SingleEngineFile:'js/game.js?version='+versionJs,
因为是在js内部修改, 所以加版本号就变得容易多了

6.cocos2d-html5的res资源缓存问题, 这个我没用版本更替的方法, 我想应该是可以的

我在这里直接对应res资源做版本管理

var sf_res = "res/res_v"+versionRes+".plist"

如果这里不做任何处理, plist可能会随着更新, 但是图片不会, 会导致严重贴图错误
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: