前端性能优化实践之 GZIP http2(6)

简介: 前端性能优化实践之 GZIP http2(6)

1、Gzip 经典且实用

网络异常,图片无法展示
|

  • 如何配置 Nginx 启动 Gzip ?
1、mac 安装 homebrew https://brew.sh/
 2、安装 nginx brew i nginx
 3、
复制代码

网络异常,图片无法展示
|

  • 然后 就可 看到配置文件 端口
  • 然后将自己打包的 build 文件夹 放到 nginx 服务器上, 此处 需要将打包 build 放在一个位置,然后 nginx 配置 找到这个地方

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • 然后 wq 保存退出

网络异常,图片无法展示
|

  • 刷新页面 localhost:80 非常nice !

网络异常,图片无法展示
|

  • 当前我们看一下  没有压缩的 大小 主要看 bundle.js 文件

网络异常,图片无法展示
|

  • 接下来 就是 配置一下 Gzip 压缩  

网络异常,图片无法展示
|

  • 这个地方 容易敲错 导致不生效 放出来
gzip_disable "msie6";
    gzip_comp_level 6;
    gzip_min_length 1100;
    gzip_proxied any;
    gzip_types
       text/plain
       text/css
       text/js
       text/xml
       text/javascript
       application/javascript
       application/x-javascript
       application/json
       application/xml
       application/rss+xml
       image/svg+xml/javascript;
       gzip_static on;
    gzip_vary on;
    gzip_buffers 4 16k;
    gzip_http_version 1.1;
复制代码
  • 压缩后 bundle.js 文件大小 ,非常 nice的进行了 压缩 !

网络异常,图片无法展示
|

  • 还有一个问题 brew-core 有问题 解决一下
  • 安装时 出现 这个问题 怎么解决
    网络异常,图片无法展示
    |

  • 这直接输入这个git config --global --unset http.proxy
  • 问题解决 非常 nice ~

网络异常,图片无法展示
|

2、启用 keep-alive  ? 参数:设置超时时长和最大请求数

网络异常,图片无法展示
|

  • 可以在两个地方 看到这个详细的信息
1、network
 2、终端 命令行 curl -v http://127.0.0.1:80 可以看到请求返回的详细信息
复制代码
  • network

网络异常,图片无法展示
|

  • 终端 命令行

网络异常,图片无法展示
|

  • 我们需要 在 nignx 配置一下

网络异常,图片无法展示
|

  • timeout:指定了一个空闲连接需要保持打开状态的最小时长(以秒为单位)
  • requests:在连接关闭之前,在此连接可以发送的请求的最大值

3、http 资源缓存 ? (重要 蛮多 )

网络异常,图片无法展示
|

  • 重要的部分html 一般进行协商缓存/不缓存,用户需要拿到最新的资源 , js/css 需要进行缓存

网络异常,图片无法展示
|

  • nginx 如何 配置 这个地方 暂时不敲了,配置之后 可看到 对应的缓存时间

网络异常,图片无法展示
|

  • Google 会使用 serviceworker  来帮助缓存

4、 service workers ?

  • 离线存储资源,使得离线后还可访问,会存在 客户端,常规只存储基本的 js css html , 不要存储 mp4 大图片

网络异常,图片无法展示
|

  • 尝试使用 它

create-react-app.dev/docs/making…

直接在 index.js 更改一下配置

网络异常,图片无法展示
|

  • 详细 原理部分 后续 补上

网络异常,图片无法展示
|

5、 http2 的升级 ?

  • 适合场景

网络异常,图片无法展示
|

  • 知乎 挺多的 h2

网络异常,图片无法展示
|

  • 对比 http1 http2 有什么优势?
1、安全性 h1采取文本传输方式 h2 采取二进制传输方式
  2、多路复用,可以同时发起/接受多个请求
  3、server push 
复制代码

1 server push

网络异常,图片无法展示
|

2 多路复用

网络异常,图片无法展示
|

3 二进制传输

网络异常,图片无法展示
|

4 头部压缩

网络异常,图片无法展示
|

  • 多说一句 https

网络异常,图片无法展示
|

  • 如何生成一个 自己的个人签名证书  ssl 证书

敲下面这几个命令

// 辅助得到私钥
openssl genrsa -des3 -passout pass:x -out server.pass.key 2048
// 得到私钥
openssl rsa -passin pass:x -in server.pass.key -out server.key 
// 生成 csr
openssl req -new -key server.key -out server.csr 
openssl x509 -req -sha256 -days 3650 -in server.csr -signkey server.key -out server.crt 
复制代码
  • 敲完之后 就可得到这个

网络异常,图片无法展示
|

  • 需要找到 位置 为下面配置 准备 直接在文件搜索 名称就可拿到 然后时间排序一下
  • 如何配置 nginx 实现 http2 ?
#
    server {
        listen       443 ssl http2;
        server_name  localhost;
        ssl on;
        ssl_certificate      /Users/fhj/Desktop/server/server.crt;
        ssl_certificate_key  /Users/fhj/Desktop/server/server.key;
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
        location / {
            root   /Users/fhj/Desktop/build;
            index  index.html index.htm;
        }
    }
复制代码

网络异常,图片无法展示
|

  • 有个小插曲

网络异常,图片无法展示
|

  • 页面效果展示  成功使用了 h2 非常的开心 !!!

网络异常,图片无法展示
|

  • 当然 重点应该是 看 请求数量和速度 ,不过 因为本地 demo 很简单,并不能看出 明显提升,技术实验场景也非常重要 ~

6、服务端渲染  SSR ?

  • 好处

网络异常,图片无法展示
|

  • 客户端 服务端渲染 对比

网络异常,图片无法展示
|

  • 适合场景

网络异常,图片无法展示
|

网络异常,图片无法展示
|


相关文章
|
20天前
|
机器学习/深度学习 存储 前端开发
实战揭秘:如何借助TensorFlow.js的强大力量,轻松将高效能的机器学习模型无缝集成到Web浏览器中,从而打造智能化的前端应用并优化用户体验
【8月更文挑战第31天】将机器学习模型集成到Web应用中,可让用户在浏览器内体验智能化功能。TensorFlow.js作为在客户端浏览器中运行的库,提供了强大支持。本文通过问答形式详细介绍如何使用TensorFlow.js将机器学习模型带入Web浏览器,并通过具体示例代码展示最佳实践。首先,需在HTML文件中引入TensorFlow.js库;接着,可通过加载预训练模型如MobileNet实现图像分类;然后,编写代码处理图像识别并显示结果;此外,还介绍了如何训练自定义模型及优化模型性能的方法,包括模型量化、剪枝和压缩等。
27 1
|
13天前
|
前端开发 JavaScript API
前端性能优化-控制并发
【9月更文挑战第7天】前端性能优化-控制并发
12 0
|
20天前
|
前端开发 大数据 数据库
🔥大数据洪流下的决战:JSF 表格组件如何做到毫秒级响应?揭秘背后的性能魔法!💪
【8月更文挑战第31天】在 Web 应用中,表格组件常用于展示和操作数据,但在大数据量下性能会成瓶颈。本文介绍在 JavaServer Faces(JSF)中优化表格组件的方法,包括数据处理、分页及懒加载等技术。通过后端分页或懒加载按需加载数据,减少不必要的数据加载和优化数据库查询,并利用缓存机制减少数据库访问次数,从而提高表格组件的响应速度和整体性能。掌握这些最佳实践对开发高性能 JSF 应用至关重要。
36 0
|
20天前
|
前端开发 JavaScript 开发者
JSF与WebSockets,打造实时通信魔法!让你的Web应用秒变聊天室,用户体验飞升!
【8月更文挑战第31天】在现代Web应用开发中,实时通信对于提升用户体验至关重要。本文探讨了如何在主要面向Web应用开发的JSF(JavaServer Faces)框架中引入WebSockets支持,以实现客户端与服务器之间的全双工通信。通过具体示例展示了在JSF应用中实现WebSockets的基本步骤:添加依赖、创建服务器端点以及在前端页面中嵌入JavaScript客户端代码。尽管这一过程中可能会遇到一些挑战,如复杂代码编写和额外配置需求,但借助AWS等云服务平台,开发者仍能高效地完成部署和管理工作,从而增强Web应用的实时通信能力。
28 0
|
20天前
|
API UED 开发者
如何在Uno Platform中轻松实现流畅动画效果——从基础到优化,全方位打造用户友好的动态交互体验!
【8月更文挑战第31天】在开发跨平台应用时,确保用户界面流畅且具吸引力至关重要。Uno Platform 作为多端统一的开发框架,不仅支持跨系统应用开发,还能通过优化实现流畅动画,增强用户体验。本文探讨了Uno Platform中实现流畅动画的多个方面,包括动画基础、性能优化、实践技巧及问题排查,帮助开发者掌握具体优化策略,提升应用质量与用户满意度。通过合理利用故事板、减少布局复杂性、使用硬件加速等技术,结合异步方法与预设缓存技巧,开发者能够创建美观且流畅的动画效果。
43 0
|
20天前
|
前端开发 UED 开发者
React组件优化全攻略:深度解析让你的前端应用飞速运行的秘诀——从PureComponent到React.memo的彻底性能比较
【8月更文挑战第31天】在构建现代Web应用时,性能是提升用户体验的关键因素。React作为主流前端库,其组件优化尤为重要。本文深入探讨了React组件优化策略,包括使用`PureComponent`、`React.memo`及避免不必要的渲染等方法,帮助开发者显著提升应用性能。通过实践案例对比优化前后效果,不仅提高了页面渲染速度,还增强了用户体验。优化React组件是每个开发者必须关注的重点。
34 0
|
20天前
|
前端开发 JavaScript 大数据
React与Web Workers:开启前端多线程时代的钥匙——深入探索计算密集型任务的优化策略与最佳实践
【8月更文挑战第31天】随着Web应用复杂性的提升,单线程JavaScript已难以胜任高计算量任务。Web Workers通过多线程编程解决了这一问题,使耗时任务独立运行而不阻塞主线程。结合React的组件化与虚拟DOM优势,可将大数据处理等任务交由Web Workers完成,确保UI流畅。最佳实践包括定义清晰接口、加强错误处理及合理评估任务特性。这一结合不仅提升了用户体验,更为前端开发带来多线程时代的全新可能。
22 0
|
22天前
|
缓存 运维 Serverless
函数计算产品使用问题之怎么优化HTTP Server的启动速度
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
Web App开发 前端开发 Apache
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
修改的ranger ui的admin用户登录密码时,需要在ranger的配置里把admin_password改成一样的,否则hdfs的namenode在使用admin时启动不起来,异常如下: Traceback (mos...
1061 0
|
Web App开发 前端开发 Android开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
使用MAT分析内存泄露 对于大型服务端应用程序来说,有些内存泄露问题很难在测试阶段发现,此时就需要分析JVM Heap Dump文件来找出问题。
771 0