前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx 动态压缩与静态压缩,显著提高前后端分离项目响应速度!

Nginx 动态压缩与静态压缩,显著提高前后端分离项目响应速度!

作者头像
江南一点雨
发布2020-03-26 10:58:47
2.8K0
发布2020-03-26 10:58:47
举报
文章被收录于专栏:玩转JavaEE玩转JavaEE

2.2.1 Nginx 动态压缩

动态压缩 Vue 还是使用普通的打包编译后的文件,将前端编译打包后的文件拷贝到 Nginx 的 html 目录下,然后访问 nginx:http://192.168.91.129

确保 nginx 运行成功后,接下来对 nginx 进行配置:

代码语言:javascript
复制
gzip  on;  # 开启 gzip
gzip_min_length 2k;# 超过 2kb 进行压缩
gzip_disable msie6; # ie6 不适用 gzip
gzip_types text/css application/javascript text/javascript image/jpeg image/png image/gif; # 需要处理的文件

配置完成后,重启 Nginx:

代码语言:javascript
复制
./nginx -s reload

启动成功后,再去访问前端页面,就可以看到压缩效果了。

2.2.2 Nginx 静态压缩

上面的动态压缩有一个问题,就是每次请求响应的时候都要压缩,其实都是相同的文件,总是压缩有点浪费资源。

我们可以提前将文件压缩好,就保存在服务端,需要用的时候直接返回,就会方便很多。

这需要我们首先在前端安装压缩插件:

代码语言:javascript
复制
npm install compression-webpack-plugin -D

安装成功之后,接下来在 vue.config.js 中进行配置:

代码语言:javascript
复制
const CompressionPlugin = require("compression-webpack-plugin")
module.exports = {
    devServer: {
        host: 'localhost',
        port: 8080,
        proxy: proxyObj
    },
    configureWebpack: config => {
        if (process.env.NODE_ENV === 'production') {
            return {
                plugins: [
                    new CompressionPlugin({
                        test: /\.js$|\.html$|\.css/,
                        threshold: 1024,
                        deleteOriginalAssets: false
                    })
                ]
            }
        }
    }
}
  • threshold 表示超过 1kb 的文件就进行压缩。
  • deleteOriginalAssets 表示压缩后是否删除原文件。

配置完成后,再次执行打包命令 vue-cli-service build。这次打包完成后,我们可以在 js 目录下看到 .gz 文件,如下:

接下来将文件上传到 Nginx 服务器,然后对 Nginx 重新进行编译打包。想让 Nginx 返回已经压缩好的文件,需要用到 Nginx 中的 http_gzip_static_module 模块,这个模块可以发送以 .gz 作为文件扩展名的预压缩文件,所以我们要对 Nginx 重新进行编译打包:

代码语言:javascript
复制
./configure --with-http_gzip_static_module
make
make install

然后在 Nginx 配置文件中开启 gzip_static,如下:

代码语言:javascript
复制
gzip_static  on;

注意,开启了 gzip_static 后,gzip_types 就失效了,所以也没必要配置这个属性了。

配置完成后,重启 Nginx,再去访问,查看浏览器日志,就会发现 gzip 已经生效了。

「注意」

静态压缩返回的 gzip 压缩文件都是提前准备好的,没有 .gz 格式的文件就会自动返回原文件。这是一种和动态压缩不同的响应策略。动态压缩是根据 Nginx 中的配置,超过配置的大小就会自动进行压缩。

首屏加载速度提高了 3 倍左右。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 江南一点雨 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.2.2 Nginx 静态压缩
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档