解决webpack打包生成gz格式css/js文件没法在nginx使用的问题--全网唯一正确

本文绝对是全网解决这个问题唯一正确的文章,没有之一!

很多人都说开启nginx gzip压缩,这些人完全是胡说八道!你们到底懂不懂叫gzip压缩啊?!

不信你就试试,如果css/js只有gz文件,nginx开启gzip,浏览器就会直接报错:Uncaught SyntaxError: Unexpected token '<'

我最痛恨那些明明不懂,却非要把复制粘贴,未经验证的文章在网上乱发!

这些傻吊还把gzip的原理夸夸其谈的说一大通,然后把他们未经验证、抄来的配置贴上去。

然后网上就充斥了各种各样这种千篇一律复制粘贴误导人的垃圾文章,而且没法真正解决问题!

然后我再来说正题: gzip是啥意思。gzip是指nginx把没有经过压缩的css,js的原始文件,进行zip压缩,达到降低网络带宽,加快页面加载速度,但注意是基于css,js的原始文件进行zip压缩! 这才是gzip使用的场景!

 好了,那现在webpack已经把css,js压缩成gz格式了,那请问你还需要nginx gzip干嘛?!

然后有人又要说了: css,js文件的原始文件不能删除,要跟gz文件一起共存,这样nginx gzip才能起作用!

看看多么荒唐的言论! 如果是这样的话,我webpack干嘛压缩成gz格式,我直接给你nginx原始文件不就完了吗!

好了,又有人说了,启用gzip_static不就完了,然后指定gzip_types不就ok了。

这个只能算说对了一个脚指头,还是不正确,不信你配置上去试试看,一点鸟用就都没有!

首先解释一下gzip_static: 它的意思的确是让nginx首先检查有没有gz格式的静态文件,如果有的话,就直接提供给浏览器。

但是,nginx有个很大的问题,它不是那么智能,就算你在gzip_types里设置了js,css类型,nginx也没法在客户端请求静态文件的时候自动提供gz文件。

那么这个问题到底应该怎么解决?

首先感谢这个时代有chatgpt这个强大的工具,它比搜索引擎这种目标性不强,缺乏归纳总结的常规工具,的确强很多倍。

但是呢,chatgpt并不能在一开始给你正确答案。你需要懂得正确提问,懂得正确的调教它,才能得到你想要的正确答案。

比如说你如果问: nginx 怎么支持gz压缩格式css和js文件?

你是得不到正确答案的,它可能就会胡说八道。

chatgpt 3.5为什么会有1750亿个参数,那是因为它需要的参数越详细,它回答的准确率才越高。

所以你在提问的时候,给chatgpt的信息越详细越好,这样才能得到正确的答案。

这个有点扯多了。

现在揭晓正确答案: 你必须按照正则匹配css/js文件类型的形式,来配置gzip_static规则,这样才能有效

   location ~* \.(js|css)$ {
                gzip_static on;
                expires max;              
        }
 

因为前面已经说了:nginx并不是很智能,并不是你直接配置了gzip_static on和gzip_types,它就能自动查找并提供gz格式的静态文件。

你需要在每一个虚拟主机的配置里面,明确的告诉nginx:匹配到什么类型的文件它才会优先查找并提供gz格式的文件。

答案本身并不复杂,但是你在网上却找不到,因为他们确实不知道,但是又喜欢胡乱复制粘贴。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/255411.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android音量调节参考一

基于android 9平台分析。 在Android系统中&#xff0c;默认的设备(phone等)音量都是分开控制的&#xff0c;这些包括媒体、铃声、闹铃、蓝牙、通话通过音频流来区别不同的音量类型。每种流类型都定义最大音量、最小音量及默认音量&#xff0c;Android 9定了了11中音频流类型&am…

手把手教你写 Compose 动画 -- 流程定制型动画 API:Animatable()

看看官方的解释&#xff1a; Animatable 是一个值容器&#xff0c;它可以在通过 animateTo 更改值时为值添加动画效果。该 API 支持 animate*AsState 的实现。它可确保一致的连续性和互斥性&#xff0c;这意味着值变化始终是连续的&#xff0c;并且会取消任何正在播放的动画。…

通过内网穿透模拟私服

通过内网穿透模拟私服nexus 1.问题引出 在学习黑马程序员2023新版JavaWeb开发教程的maven高级时&#xff0c;需要用到私服&#xff0c;黑马提供的资料中私服地址不能使用&#xff0c;需要自己搭建一个私服。 若使用传统的方式将私服部署到本地PC无法模拟真实的私服连接情况&…

localhost工具:本地代码的远程之路 | 京东云技术团队

在日常的开发过程中&#xff0c;本地代码远程调试一直是最理想的开发状态。本文通过介绍京东集团内开发的一个轻量简单的小工具”localhost”&#xff0c;从多角度的方案思考&#xff0c;到原理介绍&#xff0c;到最终的方案落地&#xff0c;在开发阶段发现问题&#xff0c;解决…

手写VUE后台管理系统8 - 配置404NotFound路由

设置404页面 配置路由404页面 配置路由 这里配置了两个路由&#xff0c;一个是主页&#xff0c;另外一个则匹配任意路由显示为404页面。因为只配置了两个路由&#xff0c;如果路径没有匹配到主页&#xff0c;则会被自动导向到404页面&#xff0c;这样就可以实现整站统一的404页…

微信小程序复制功能

在微信公众平台隐私协议中加剪贴板 设置-基本设置 审核通过后 app.json中添加 "permission": {"scope.writeClipboard": {"desc": "你的剪贴板将用于小程序的复制操作"} }, index.ts // 复制指定内容 handleCopy() {console.log(&q…

Unity中Batching优化的动态合批

文章目录 前言一、动态合批的规则1、材质相同是合批的前提&#xff0c;但是如果是材质实例的话&#xff0c;则一样无法合批。2、支持不同网格的合批3、动态合批需要网格支持的顶点条件二、我们导入一个模型并且制作一个Shader&#xff0c;来测试动态合批1、我们选择模型的 Mesh…

html和css写淘宝的快速导航条

目录 1、css代码 2、html代码 1、css代码 <style>* {margin: 0;padding: 0;list-style: none;text-decoration: none;}.nav {width: 900px;height: 40px;background-color: rgb(247, 249, 250);margin: 50px auto;padding-left: 30px;}.nav>li {float: left;width: 1…

06 硬件知识入门(MOSS管)

1 简介 MOS管和三极管的驱动方式完全不一样&#xff0c;以NPN型三极管为例&#xff0c;base极以小电流打开三极管&#xff0c;此时三极管的集电极被打开&#xff0c;发射极的高电压会导入&#xff0c;此时电流&#xff1a;Ic IbIe &#xff1b;电压&#xff1a;Ue>Uc>Ub…

2024年网络安全比赛--系统渗透测试(超详细)

一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 1.在渗透机中对服务器主机进行信息收集&#xff0c;将服务器开启的端口号作为 Flag 值提交; 2.在渗透机中对服务器主机进行渗透&#xff0c;在服务器主机中获取服务器主机名称&#xff…

前端典例算法集合

前言 刷算法顺序&#xff1a;1、熟悉本文章第1点的内容&#xff1b;2、刷力扣算法&#xff0c;可以参考这本书的顺序与思想&#xff1a;代码随想录完整版PDF下载 | 合集下载 | 百度云 | | 代码随想录 (programmercarl.com) 3、刷牛客的高频考题 1、熟悉数组Array&#xff0c…

泰勒级数泰勒展开, 麦克劳林级数

一直认为泰勒展开就是泰勒级数。查度娘说不是&#xff0c;晕&#xff0c;当知识储备&#xff0c;重温高数。想当年&#xff0c;同济编的高数&#xff0c;每次都是95分&#xff08;百分制&#xff09;以上呢。 一、定义不同 泰勒级数&#xff08;英语&#xff1a;Taylor series…