第三方网站返回hybrid app H5页面缓存问题应对策略

时间:2022-12-29 20:19:42

  最近负责公司各产品线购买模块的开发,各项功能如期开发完成后测试那边反馈回来一个问题:IOS手机在点击支付宝购买后,跳转到支付宝网站时不输入支付密码,直接点返回,返回到我们自己的APP购买界面发现页面显示内容是第一次进入购买页面时候的设备信息,不能完整的还原新设备的购买界面,安卓手机不存在这个问题。经排查,原来是苹果手机的缓存策略导致,第一次点击购买的时候,参数已经注入到页面,post请求后正确跳转到第三方支付宝网站,不购买直接返回,由于苹果手机缓存了之前的购买页面,导致返回的时候不再发送post请求去服务器请求数据,只是get了缓存的一个页面,导致页面信息不对。

  这个问题比较棘手,因为我们已经使用了cookies存储页面数据来解决从第三方网站返回时候页面参数丢失的问题,当没有页面参数传入的时候就去cookie里面取,这种方法对安卓手机是管用的,因为安卓手机是缓存的链接,但是对于IOS的缓存策略,已经不会再去发送post请求取参数了,因此我们需要单独针对IOS的移动设备做解决方案。.

  经尝试,决定使用sessionStorage来规避IOS页面被缓存的问题。正请求使用SessionStorage来存储参数,然后和缓存的历史页面参数做对比,不一致则location.reload(true)强制刷新。关键代码如下:

 beforeCreate() {
let ua = navigator.userAgent.toLowerCase();
if (ua.indexOf('ipad') > -1 || ua.indexOf('iphone') > -1) {
try {
let key = '_purchase_page_params_',
deviceId = PAGE_PARAMS.deviceId;
if (history.length > 1) {//当从第三方页面返回
if (!deviceId) { //若没有获取到设备id,则强制刷新
location.reload(true);
} else {
let storageParams = null,
str = sessionStorage.getItem(key) || '';
if (str) {
storageParams = JSON.parse(str);
}
if (storageParams && storageParams.deviceId !== deviceId) {//对比参数,不一致则强制刷新
location.reload(true);
}
}
} else {
sessionStorage.setItem(key, JSON.stringify(PAGE_PARAMS));
}
} catch (e) {
console.error(e.message);
}
}
}

经测试,解决此问题。

第三方网站返回hybrid app H5页面缓存问题应对策略的更多相关文章

  1. hybrid App h5二级页面返回的时候保持与一级页面浏览的位置一致

    最近在开发公司hybrid app的时候,需要将原本原生的配置中心模块统一变更为H5,做完之后从测试那里反馈回来这样一个问题,当滑到页面底部或中部的时候进入子页面进行设置,返回的时候页面应该定位到离开 ...

  2. APP H5页面显示优化

    在开发移动端APP页面时,对各操作系统各种型号的手机进行适配是必须的.然鹅,上周在开发完一个落地页后,被测试给打了回来,其中列出了一个在我看来很小的问题:单击进入页面的时候,页面还没加载完的时候字体显 ...

  3. 手机app/h5页面http请求抓包调试

    1.抓包机器跟客户端手机连上同一wifi热点,最好是第三者提供的移动wifi,公司内网wifi网络访问有限制. 2.设置手机客户端http代理 三者关系图示:

  4. Hybrid App中原生页面 VS H5页面(分享)

    本文部分转自  http://www.jianshu.com/p/00ff5664e000 现有3类主流APP,分别为:Web App.Hybrid App(混合模式移动应用,Hybrid有“混合的” ...

  5. springboot和redis处理页面缓存

    页面缓存是应对高并发的一个比较常见的方案,当请求页面的时候,会先查询redis缓存中是否存在,若存在则直接从缓存中返回页面,否则会通过代码逻辑去渲染页面,并将渲染后的页面缓存到redis中,然后返回. ...

  6. hybrid app初体验,和react-native一起飞

    第一次启动了react-native的示例,今天主要把其中遇到的坑与解决的办法分享给大家.如有疏漏.错误还望指正. 首先还是要从hybrid app这个概念说起(如果对于这个过程不感兴趣的同学,可以直 ...

  7. Hybrid APP基础篇(三)->Hybrid APP之Native和H5页面交互原理

    本文已经不维护,新地址: http://www.cnblogs.com/dailc/p/8097598.html 说明 Hybrid模式原生和H5交互原理 目录 前言 参考来源 前置技术要求 楔子 A ...

  8. Hybrid App中原生页面 VS H5页面

    Hybrid App中原生页面 VS H5页面   现有3类主流APP,分别为:Web App.Hybrid App(混合模式移动应用,Hybrid有"混合的"意思). Nativ ...

  9. Hybrid APP之Native和H5页面交互原理

    Hybrid APP之Native和H5页面交互原理 Hybrid APP的关键是原生页面与H5页面直接的交互,如下图,痛过JSBridge,H5页面可以调用Native的api,Native也可调用 ...

随机推荐

  1. 【深度学习Deep Learning】资料大全

    最近在学深度学习相关的东西,在网上搜集到了一些不错的资料,现在汇总一下: Free Online Books  by Yoshua Bengio, Ian Goodfellow and Aaron C ...

  2. CentOS 6.3下Samba服务器的安装与配置方法(图文详解)

    这篇文章主要介绍了CentOS 6.3下Samba服务器的安装与配置方法(图文详解),需要的朋友可以参考下   一.简介  Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件, ...

  3. [LintCode] Longest Common Prefix 最长共同前缀

    Given k strings, find the longest common prefix (LCP). Have you met this question in a real intervie ...

  4. HDFS体系架构

    Master-slaver结构,namenode是中心服务器维护着文件系统树和整个树内的文件目录, 负责整个数据集群的管理.datanode分布在不同的机架上,在客户端和namenode的调度下 存储 ...

  5. 复制本地文件到HDFS本地测试异常

    项目中需要将本地文件拷贝到hdfs上,由于本人比较懒,于是使用擅长的Java程序通过Hadoop.FileSystem.CopyFromLocalFile方法来实现. 在本地(Window 7 环境) ...

  6. Photos FrameWork 续

    1. Model PHAsset .PHAssetCollection.PHCollectionList 是Photos框架中的模型类,PHAsset类模型是图片或者视频文件数据:PHAssetCol ...

  7. sql字符串分割扩展方法

    可编程性—表值函数 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[Split] ( @RowData ...

  8. 设置tomcat支持软连接

    一般开发时不会在tomcat安装目录/data/tomcat/webapps/ROOT 下去,上传部署:而是建立软连接,在tomcat安装目录之外操作,比如执行git pull拉取项目,而tomcat ...

  9. 关于 Image Caption 中测试时用到的 beam search算法

    关于beam search 之前组会中没讲清楚的 beam search,这里给一个案例来说明这种搜索算法. 在 Image Caption的测试阶段,为了得到输出的语句,一般会选用两种搜索方式,一种 ...

  10. Ajax的简单介绍与使用

    1.什么是Ajax? Ajax(Asynchronous JavaScript and XML),简单说就是不需要刷新当前页面而实现javaScript和和后台服务器交换数据以更新网页中的部分内容. ...