h5版本版本有更新,浏览器有缓存 怎么破,要怎么处理才能保证 每次访问都是最新的

要怎么处理才能保证 每次访问都是最新的

我感觉只要编辑了代码 浏览器就会自动刷新

1赞

不是啊 。你正式放在外网的话 就可能有缓存,不可能每次都是重新加载的

在页面上引用的url后面增加时间戳。。。

如果之前 html 中引用的是 a.js, 你把时间戳加上, a.js?_t=000
只要每次链接的地址不一样,浏览器就会重新请求完整的文件。。。所以只要改变后面的_t的值就行了。
实现方式很多,后端可以用模板引擎,传入参数到这里,前段可以用js插入这个引用文件到页面。

我是这样做的:
发布的目录里src/settings.js里你看一下,有个_CCSettings,rawAssets里保存的是各个资源。格式是UUID为key,资源的相对地址和资源类型为value。UUID和资源的对应可以从项目目录下的library/uuid-to-mtime.json看到。
在src下面新建个update.js,如果更新了bde2bcf7-7bd4-449d-a124-2ad380234082这个资源为版本3,写一句:
_CCSettings.rawAssets.assets[“bde2bcf7-7bd4-449d-a124-2ad380234082”][0]+="?v=3";
然后在index.html的
script src=“src/settings.js” charset=“utf-8”
后面加一行:
src=“src/update.js?v=3” charset=“utf-8”
注意update.js后面也要加版本号。如果资源更新多和频繁的话需要做一个后台完成上述步骤。

希望官方能出一个方便部署的功能吧。

1赞

这样好麻烦啊 有没有简单的方法啊

比如我构建出H5版本后 放到服务器 http://102.13.25.114/index.html 是不是直接http://102.13.25.114/index.html?v=1.2.0 这样就可以了 还是说 所有的资源 包括JS 都要这么做啊

还好吧,写一个后台做这些事,也没多复杂。而且用户只需要下载你更新的资源而不是整个游戏。

但你这只是资源吧 如果 settings.js 也改变了呢 怎么更新它,能留个QQ交流下么

update.js的源码能否给个啊 谢谢啊

update.js就是我上面写的那一行啊。你更新了一个资源就写一行。它的作用就是把settings.js里定义的_CCSettings里面资源的相对路径加上版本号。

settings.js改变了在index.html里加版本号。

好的 谢谢。。。。建议官方把 toddlxt的方案 归到官方的文档里,在官方没有出解决方案前大家可以参考

奇了怪啊,按照上述操作,我尝试更新一个大背景单图png格式,增加了update.js,其中也添加了该背景图的变化,类似_CCSettings.rawAssets.assets[“bde2bcf7-7bd4-449d-a124-2ad380234082”]+="?v=3";
同时 在index.html中也做了引用,加上了v=3,但再次进入时看到提示bde2bcf7-7bd4-449d-a124-2ad380234082.json找不到,于是大背景也没有更新下来。。这是为何呢?要更新的是png,却提示找不到json?

bde2bcf7-7bd4-449d-a124-2ad380234082是原来的图的UUID,你看看你更新的图的UUID是不是变了。如果新图的UUID不是这个,你又删除了原来的图,就找不到bde2bcf7-7bd4-449d-a124-2ad380234082.json了。

哥们,能帮我看看我的demo吗,还是提提示.json找不到。很简单,就是helloword,发布后替换cocoslogo图片。

web-mobile.zip (343.2 KB)

谢谢。

你的
_CCSettings.rawAssets.assets[“6aa0aa6a-ebee-4155-a088-a687a6aadec4”] += “?v=5”
应该改为
_CCSettings.rawAssets.assets[“6aa0aa6a-ebee-4155-a088-a687a6aadec4”][0] += “?v=5”

是我之前写的方法里少了这个[0],让你困扰了这么多天,抱歉!已经修正。

:innocent: 。。。非常感谢。

当发布过后地址可能是固定的,比如今天玩家知道了某个游戏访问 http://102.13.25.114/index.html,三天后后台其实有更新,玩家可不会在后面加个时间戳吧?
这么理解有问题么?谢谢、