https 请求白屏_记一次HTTPS性能优化
为了解决部分 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性能优化相关推荐
- 记一次前端性能优化——vue-cli4优化首屏加载
记一次前端性能优化--vue-cli4优化首屏加载 一.前言 vue.js是一款时下非常流行的前端框架,很多公司,例如阿里.腾讯.字节等都在积极应用vue作为前端开发框架.这就说明,熟练使用vue开发 ...
- 记一次mysql性能优化过程
2019独角兽企业重金招聘Python工程师标准>>> 转发自:记一次mysql性能优化过程 由于配置是运行过那么长时间,很稳定,基本上不考虑,所以本次主要是sql的优化,并且集中在 ...
- 记一次查询性能优化,原30s+,现0.5s~20s
记一次查询性能优化,原30s+,现0.5s~20s 原查询sql是 两张大表(用户合同表二百多万,合同信息表三百万)联查并按用户id分组,再左连接上6张小表(小表先根据日期查询并按用户id分组),查询 ...
- android广告页白屏_年度整理!2056页《大厂安卓岗面试真题解析合集》火爆全网...
前言 2020年还有最后一个月就结束了,时间一眨眼就过去了.今年面试有没有被面试官虐呢,明年跳槽想跳去哪个大厂呢,这是个问题.说实话,今年我面试也被虐了,为了明年能找到一份心怡的工作,特地的从朋友那里 ...
- android 启动白屏_为什么说Android 架构的未来是 MVVM?
据<第45次中国互联网络发展状况统计报告>,2019年市场上监测到的APP数量比2018年减少85万款- 这两年,很多朋友都会有这样的疑惑: "现在Android的坑还值不值得入 ...
- Android WebView 加载https网页白屏,空白解决方案
最近在做一个H5相关的需求,使用WebView加载第三方提供的https网页时显示白屏.但是调试打开Baidu和B站的https网址时就能正常打开.被这个问题困扰了半天. 合作方说是android手机 ...
- android 启动白屏_从细节入手改善用户体验,Flutter跨平台App开发中设置Android和iOS的启动页
前言 flutter开发App方便快捷,就是冷启动的时候要加载dart引擎有短暂的白屏,严重影响用户体验,这个时候我们就需要设置一个启动图片,想国内大部分App那样(例如微信那个地球),启动App的时 ...
- 苹果手机白屏_安卓卡顿苹果闪退,手机换代的动力原来是这些
一般手机使用大约两年之后,就会明显感觉流畅度大不如从前.这种现象以前在安卓手机上比较常见,但其实是以流畅著称的苹果iPhone用久了也会体验变差,甚至出现了闪退.白屏等现象.想要搞懂其中的原因,我们不 ...
- 苹果手机白屏_安卓用久了卡顿 苹果用久了闪退 究竟是因为啥?
一般手机使用大约两年之后,就会明显感觉流畅度大不如从前.这种现象以前在安卓手机上比较常见,但其实是以流畅著称的苹果iPhone用久了也会体验变差,甚至出现了闪退.白屏等现象.想要搞懂其中的原因,我们不 ...
最新文章
- python判断字符串
- 连接器篇(二) 高频系列
- HighNewTech:LL / GCP BOOTH at CES 2019 - January 8-11, 2019 - Westgate Convention Center Las Vegas
- Mybatis(13)动态sql语句if/where/foreach
- 超级好用的坐标转换软件
- gitlab 项目分支管理的一种策略
- Win11如何提高游戏性能?Win11提升游戏性能的方法
- vim写python_用 Vim 写 Python 的最佳实践
- MD5加密以及产生唯一的ID
- IDE警告信息不应该被忽略
- 使用Kibana工具测试elasticsearch数据
- 『WPF』DataGrid的使用
- 单反拍摄技巧:利用直方图曝光
- 国外素材网站打不开?还想要同品质图片?
- c#写图像tif gdal_C#使用GDAL将tif图像转换为jpg、bmp、png和gif格式的图像
- 遇到slideUp Down 问题
- HDU 2201 熊猫阿波问题==金刚坐飞机问题
- linux无法访问移动硬盘,移动硬盘“无法访问”的解决方案
- BZOJ4340 : BJOI2015 隐身术
- 增加收入的 6 种方式
热门文章
- git进入项目目录 windows_Windows下搭建Git服务器
- MySQL性能优化、故障排查及最佳实践秘籍,阿里云数据库专家玄惭的“武功”全记录...
- Covariance and Contravariance in C#的搜索条件
- 一张图带你看清2014年就业形势-管理专业排名第一,就业难
- 利用stdin stdout stderr及POSIX-linux机制重定向写日志
- NS2中802.11代码深入理解—packet传输的流程 (转帖)
- Nagios系统监控软件的安装设置(4)
- [IIS]修改MaxFieldLength与MaxRequestBytes彻底解决Request Too Long的问题
- 编程之美:无差错二分查找
- SQL学习笔记 where子句用法,like关键字 嵌套查询