为了解决部分 ios 打开 h5 网页很慢的情况(参考地址:https://developers.weixin.qq.com/community/develop/doc/000a6671efc968a3ce2acb27d59400)

场景描述

微信版本 7.0.15,IOS 版本 13.5.1,网站 ssl 证书颁发者 Let's Encrypt 免费证书

症状:微信扫码或直接打开请求地址后,页面白屏顶部进度条加载非常慢,大概要4-5秒

同事的某些手机(Phone6s 和 iPhone11)用户前几次打开页面请求接口的时候会出现,之后再打开会快一些。同样网络环境下,安卓手机打开很快,iPhone6SPlus 的打开也很快

前提,已经开启HTTPS服务,比如有下列配置,有 crt, key 格式的证书文件

    listen                     80;listen                     443 ssl http2;server_name                xxx.xxx.com;# 域名ssl_certificate            /data/proxy/sites/webset/ssl/site.crt;ssl_certificate_key        /data/proxy/sites/webset/ssl/site.key;ssl_prefer_server_ciphers  on;ssl_ciphers                ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;ssl_protocols              TLSv1 TLSv1.1 TLSv1.2;ssl_session_cache          shared:SSL:5m;ssl_session_timeout        5m;keepalive_timeout          75s;keepalive_requests         100;access_log                 /data/proxy/sites/webset/log/nginx/access.log;error_log                  /data/proxy/sites/webset/log/nginx/error.log;set_real_ip_from           127.0.0.1;real_ip_header             X-Forwarded-For;real_ip_recursive          on;gzip                       on;gzip_comp_level            6;gzip_min_length            1k;gzip_types                 text/plain text/css text/xml text/javascript text/x-component application/json application/javascript application/x-javascript application/xml application/xhtml+xml application/rss+xml application/atom+xml application/x-font-ttf application/vnd.ms-fontobject image/svg+xml image/x-icon font/opentype;

将 .crt 的 ssl 证书文件转换成 .pem 格式

参考:证书之间的转换(crt pem key)

使用下面的 openssl 命令:

openssl x509 -in www.x.com.crt -out www.x.com.pem

优化方案

开启 OCSP Stapling

参考地址:Nginx之OCSP stapling配置

参考地址:Nginx 启用 OCSP Stapling的配置

参考地址:从无法开启 OCSP Stapling 说起,OCSP是什么

在上面的 nginx 配置中增加如下内容

    ssl_stapling               on;ssl_stapling_verify        on; # 启用OCSP响应验证,OCSP信息响应适用的证书ssl_trusted_certificate    /data/proxy/sites/xxx.xxx.com/ssl/site.pem; #若 ssl_certificate 指令指定了完整的证书链,则 ssl_trusted_certificate 可省略。resolver                   8.8.8.8 8.8.4.4 114.114.114.114 216.146.35.35 216.146.36.36 208.67.220.220 208.67.220.220 valid=300s; #添加resolver解析OSCP响应服务器的主机名,valid表示缓存。resolver_timeout           5s; #resolver_timeout表示网络超时时间

修改后的配置为:

 listen                     80;listen                     443 ssl http2;server_name                xxx.xxx.com;# 域名ssl_certificate            /data/proxy/sites/xxx.xxx.com/ssl/site.crt;ssl_certificate_key        /data/proxy/sites/xxx.xxx.com/ssl/site.key;ssl_prefer_server_ciphers  on;ssl_ciphers                ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;ssl_protocols              TLSv1 TLSv1.1 TLSv1.2;ssl_session_cache          shared:SSL:5m;ssl_session_timeout        5m;ssl_stapling               on;ssl_stapling_verify        on; # 启用OCSP响应验证,OCSP信息响应适用的证书ssl_trusted_certificate    /data/proxy/sites/xxx.xxx.com/ssl/site.pem; #若 ssl_certificate 指令指定了完整的证书链,则 ssl_trusted_certificate 可省略。resolver                  8.8.8.8 8.8.4.4 114.114.114.114 216.146.35.35 216.146.36.36 208.67.220.220 208.67.220.220 valid=300s; #添加resolver解析OSCP响应服务器的主机名,valid表示缓存。resolver_timeout           5s; #resolver_timeout表示网络超时时间keepalive_timeout          75s;keepalive_requests         100;access_log                 /data/proxy/sites/xxx.xxx.com/log/nginx/access.log;error_log                  /data/proxy/sites/xxx.xxx.com/log/nginx/error.log;set_real_ip_from           127.0.0.1;real_ip_header             X-Forwarded-For;real_ip_recursive          on;gzip                       on;gzip_comp_level            6;gzip_min_length            1k;gzip_types                 text/plain text/css text/xml text/javascript text/x-component application/json application/javascript application/x-javascript application/xml application/xhtml+xml application/rss+xml application/atom+xml application/x-font-ttf application/vnd.ms-fontobject image/svg+xml image/x-icon font/opentype;

检测命令(设置完成后,重启 nginx,然后可能需要稍等几分钟检测才会是开启成功)

openssl s_client -connect 域名:443 -status -tlsextdebug < /dev/null 2>&1 | grep -i "OCSP response"

如果你的服务器上部署了多个 HTTPS 站点,可能还需要加上 -servername 参数启用 SNI:

openssl s_client -connect 域名:443 -servername 域名或服务名  -status -tlsextdebug < /dev/null 2>&1 | grep -i "OCSP response"

如果结果是下面这样,说明 OCSP Stapling 已开启:

OCSP response:
OCSP Response Data:OCSP Response Status: successful (0x0)Response Type: Basic OCSP Response

而这样显然是未开启:

OCSP response: no response sent

开启 OCSP Stapling 后,同事的设备首次打开网站或请求接口速度从 4000ms 提升到了 500ms,速度提升了 8 倍

https 请求白屏_记一次HTTPS性能优化相关推荐

  1. 记一次前端性能优化——vue-cli4优化首屏加载

    记一次前端性能优化--vue-cli4优化首屏加载 一.前言 vue.js是一款时下非常流行的前端框架,很多公司,例如阿里.腾讯.字节等都在积极应用vue作为前端开发框架.这就说明,熟练使用vue开发 ...

  2. 记一次mysql性能优化过程

    2019独角兽企业重金招聘Python工程师标准>>> 转发自:记一次mysql性能优化过程 由于配置是运行过那么长时间,很稳定,基本上不考虑,所以本次主要是sql的优化,并且集中在 ...

  3. 记一次查询性能优化,原30s+,现0.5s~20s

    记一次查询性能优化,原30s+,现0.5s~20s 原查询sql是 两张大表(用户合同表二百多万,合同信息表三百万)联查并按用户id分组,再左连接上6张小表(小表先根据日期查询并按用户id分组),查询 ...

  4. android广告页白屏_年度整理!2056页《大厂安卓岗面试真题解析合集》火爆全网...

    前言 2020年还有最后一个月就结束了,时间一眨眼就过去了.今年面试有没有被面试官虐呢,明年跳槽想跳去哪个大厂呢,这是个问题.说实话,今年我面试也被虐了,为了明年能找到一份心怡的工作,特地的从朋友那里 ...

  5. android 启动白屏_为什么说Android 架构的未来是 MVVM?

    据<第45次中国互联网络发展状况统计报告>,2019年市场上监测到的APP数量比2018年减少85万款- 这两年,很多朋友都会有这样的疑惑: "现在Android的坑还值不值得入 ...

  6. Android WebView 加载https网页白屏,空白解决方案

    最近在做一个H5相关的需求,使用WebView加载第三方提供的https网页时显示白屏.但是调试打开Baidu和B站的https网址时就能正常打开.被这个问题困扰了半天. 合作方说是android手机 ...

  7. android 启动白屏_从细节入手改善用户体验,Flutter跨平台App开发中设置Android和iOS的启动页

    前言 flutter开发App方便快捷,就是冷启动的时候要加载dart引擎有短暂的白屏,严重影响用户体验,这个时候我们就需要设置一个启动图片,想国内大部分App那样(例如微信那个地球),启动App的时 ...

  8. 苹果手机白屏_安卓卡顿苹果闪退,手机换代的动力原来是这些

    一般手机使用大约两年之后,就会明显感觉流畅度大不如从前.这种现象以前在安卓手机上比较常见,但其实是以流畅著称的苹果iPhone用久了也会体验变差,甚至出现了闪退.白屏等现象.想要搞懂其中的原因,我们不 ...

  9. 苹果手机白屏_安卓用久了卡顿 苹果用久了闪退 究竟是因为啥?

    一般手机使用大约两年之后,就会明显感觉流畅度大不如从前.这种现象以前在安卓手机上比较常见,但其实是以流畅著称的苹果iPhone用久了也会体验变差,甚至出现了闪退.白屏等现象.想要搞懂其中的原因,我们不 ...

最新文章

  1. python判断字符串
  2. 连接器篇(二) 高频系列
  3. HighNewTech:LL / GCP BOOTH at CES 2019 - January 8-11, 2019 - Westgate Convention Center Las Vegas
  4. Mybatis(13)动态sql语句if/where/foreach
  5. 超级好用的坐标转换软件
  6. gitlab 项目分支管理的一种策略
  7. Win11如何提高游戏性能?Win11提升游戏性能的方法
  8. vim写python_用 Vim 写 Python 的最佳实践
  9. MD5加密以及产生唯一的ID
  10. IDE警告信息不应该被忽略
  11. 使用Kibana工具测试elasticsearch数据
  12. 『WPF』DataGrid的使用
  13. 单反拍摄技巧:利用直方图曝光
  14. 国外素材网站打不开?还想要同品质图片?
  15. c#写图像tif gdal_C#使用GDAL将tif图像转换为jpg、bmp、png和gif格式的图像
  16. 遇到slideUp Down 问题
  17. HDU 2201 熊猫阿波问题==金刚坐飞机问题
  18. linux无法访问移动硬盘,移动硬盘“无法访问”的解决方案
  19. BZOJ4340 : BJOI2015 隐身术
  20. 增加收入的 6 种方式

热门文章

  1. git进入项目目录 windows_Windows下搭建Git服务器
  2. MySQL性能优化、故障排查及最佳实践秘籍,阿里云数据库专家玄惭的“武功”全记录...
  3. Covariance and Contravariance in C#的搜索条件
  4. 一张图带你看清2014年就业形势-管理专业排名第一,就业难
  5. 利用stdin stdout stderr及POSIX-linux机制重定向写日志
  6. NS2中802.11代码深入理解—packet传输的流程 (转帖)
  7. Nagios系统监控软件的安装设置(4)
  8. [IIS]修改MaxFieldLength与MaxRequestBytes彻底解决Request Too Long的问题
  9. 编程之美:无差错二分查找
  10. SQL学习笔记 where子句用法,like关键字 嵌套查询