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


    文章转载自:https://mp.weixin.qq.com/s/NuTmEUQU5L69is53bCauKA

    Nginx 中配置前端的 gzip 压缩,有两种思路:

    • Nginx 动态压缩,静态文件还是普通文件,请求来了再压缩,然后返回给前端。
    • Nginx 静态压缩,提前把文件压缩成 .gz 格式,请求来了,直接返回即可。

    Nginx 动态压缩

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

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

    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, 启动成功后,再去访问前端页面,就可以看到压缩效果了。

    Nginx 静态压缩

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

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

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

    npm install compression-webpack-plugin -D
    

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

    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 重新进行编译打包:

    ./configure --with-http_gzip_static_module
    make
    make install
    

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

    gzip_static  on;
    

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

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

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

  • 相关阅读:
    解决Xcode8打印了nw_socket_handle_socket_event Event mask
    调用系统框架使用设备系统语言的设置,相册相机设置为中文
    ios开发 之 设置多种文字颜色/背景色/文字下划线/行间距 NSString
    IOS 开发中 Whose view is not in the window hierarchy 错误的解决办法
    UITableView设置cell的separator 分割线
    iOS用户点击推送消息进入应用后自动跳转到对应的ViewController
    随感
    JS获取当前网页大小以及屏幕分辨率等
    js将秒转换为 分:秒 函数
    css实现强制不换行/自动换行/强制换行
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/16277891.html
Copyright © 2020-2023  润新知