動態壓縮其實就是由nginx伺服器對編譯造物進行壓縮,需要在nginx.conf的http、https模組開啟下面的設定:
gzip on; # 开启gizo压缩 gzip_min_length 1k; # gizp压缩起点,文件大于1k才进行压缩 gzip_comp_level 6; # 压缩级别 数字越大压缩得越小 但是越耗性能 根据实际情况而定 gzip_proxied any; # nginx做为反向代理时启用, 详细见官方文档:http://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_proxied gzip_vary on; # 是否在http header中添加Vary: Accept-Encoding gzip_buffers 16 8k; # 设置压缩所需要的缓冲区大小,以8k为单位,案例中则申请16*4k的缓冲区 gzip_http_version 1.1; # http的版本 gzip_types text/plain application/javascript text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; # 文件类型
更改完配置,重新啟動nginx伺服器,查看靜態資源回應頭,出現Content-Encoding: gzip ****則代表開啟成功;
##動態壓縮是在伺服器上進行的,壓縮等級越高越耗性能,靜態壓縮就是為了解決這個問題而生的,開啟靜態壓縮後,nginx會自動尋找.gz後綴的文件,如果沒有則返回源文件;於是乎,我們就可以在前端建置的時候進行gzip壓縮;以vite為例,我們需要引入vite-plugin-compression插件,並且在vite.config.js中按照下面的方式配置;
import viteCompression from 'vite-plugin-compression'; // gzip plugins: [ viteCompression() ]
verbose: true, // 是否在控制台输出压缩结果 这里我们打开查看压缩的效果 disable: false, // 是否禁用 threshold: 10240, // 大于这个值才进行压缩 单位为b algorithm: 'gzip', // 算法 除了gzip还有 ['brotliCompress' ,'deflate','deflateRaw'] ext: '.gz', // 输出的后缀
dist/D:/code/vue/mine/waylon-blog/packages/waylon-blog-pages/assets/index-d023f1e5.css.gz 598.32kb / gzip: 67.81kb
gzip_static on
1,nginx對靜態壓縮的檔案要求較高,必須與原始檔案同時生成,如果不是同時生成的,那麼nginx將無法進行匹配(對於這一點,筆者在引入插件後原始程式碼未變更,導致gz檔案與原始檔案時間不一致,導致靜態壓縮不生效);
./configure --with-http_gzip_static_module
make
以上是nginx gzip動態壓縮和靜態壓縮怎麼配置的詳細內容。更多資訊請關注PHP中文網其他相關文章!