小程序内嵌的H5缓存机制

我们项目一直做的是小程序内嵌H5聊天室的项目

最近遇到了个奇怪的bug,当在聊天页面聊天的时候,点击了H5项目的链接,跳转出去了,回来之后,别人发的消息H5页面就看不到了。

按照在浏览器开发的逻辑,点击外部链接,再回来,其实相当于刷新页面。然而在刷新页面的时候,前端会去走接口请求全部的聊天记录,这样你在走期间的所有消息也会被展示。

想是这么想的,浏览器上运行也没有问题,但是真机测试的时候发现了问题。

在ios机型上,跳转外部链接,再回来不会重新请求历史记录接口,但是之前渲染的聊天气泡都在,这就导致,在离开的这个期间,对方发的所有消息,H5页面都是不会再继续展示的,展示的还是之前的消息。这是因为ios与安卓的浏览器缓存机制的问题导致的。

解决这个问题的关键是,有些接口当页面重新回来的时候要重新加载一遍,我们可以把这一部分接口放进window的onpageshow事件里面去。当页面重新展示的时候,我去加载一遍我的接口。

可以进行机型检测,当只有苹果机型,并且能确定页面是从缓存读取出来的时候,我再去重新刷新页面。

window.onpageshow = function(event) {
            // persisted判断页面是不是从缓存里面读取出来的
            if (event.persisted) {
                if (isweixin()) {
                    // 判断是不是微信ios环境
                    if (window.__wxjs_is_wkwebview) {
                        // 刷新页面
                        window.location.reload() 
                    }
                }
            }
        }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值