美文网首页RxJavaJava服务器端编程Java
压缩静态资源减少带宽传输的方式

压缩静态资源减少带宽传输的方式

作者: 迦叶_金色的人生_荣耀而又辉煌 | 来源:发表于2021-12-14 11:04 被阅读0次

上一篇 <<<高并发情况下,接口的代码会存在哪些问题
下一篇 >>>动静分离架构模式


1.人工在线压缩

css/js/img实现压缩地址:http://tool.oschina.net/jscompress/

2.Maven自动打包压缩,生成min文件

<!-- 构建相关配置 -->
    <build>
        <!-- maven插件配置 -->
        <plugins>
            <plugin>
                <!-- YUI Compressor Maven压缩插件 -->
                <groupId>net.alchim31.maven</groupId>
                <artifactId>yuicompressor-maven-plugin</artifactId>
                <version>1.3.0</version>
                <configuration>
                    <!-- 读取js,css文件采用UTF-8编码 -->
                    <encoding>UTF-8</encoding>
                    <!-- 不显示js可能的错误 -->
                    <jswarn>false</jswarn>
                    <!-- 若存在已压缩的文件,会先对比源文件是否有改动。有改动便压缩,无改动就不压缩 -->
                    <force>false</force>
                    <!-- 在指定的列号后插入新行 -->
                    <linebreakpos>-1</linebreakpos>
                    <!-- 压缩之前先执行聚合文件操作 -->
                    <preProcessAggregates>true</preProcessAggregates>
                    <!-- 压缩后保存文件后缀 -->
                    <suffix>.min</suffix>
                    <!-- 源目录,即需压缩的根目录 -->
                    <sourceDirectory>${basedir}/mobile</sourceDirectory>
                    <!-- 压缩js和css文件 -->
                    <includes>
                        <include>**/*.js</include>
                        <include>**/*.css</include>
                    </includes>
                    <!-- 以下目录和文件不会被压缩 -->
                    <excludes>
                        <exclude>**/*.min.js</exclude>
                        <exclude>**/*.min.css</exclude>
                        <exclude>scripts/data/*.js</exclude>
                    </excludes>

                </configuration>
            </plugin>
        </plugins>
    </build>

使用:mvn yuicompressor:compress
压缩完后,会生成min文件,去除了注释空格换行等


3.Nginx自带的压缩

server {
        listen       8888;
        server_name  www.jarye.cn
        gzip on;
        gzip_buffers 32 4K;
        gzip_comp_level 6;
        gzip_min_length 100;
        gzip_types application/javascript text/css text/xml;
        gzip_disable "MSIE [1-6]\."; #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
        gzip_vary on;
        location / {
            proxy_pass   http://localhost:9091/;
            index  index.html index.htm;
        }
}

gzip配置的常用参数
gzip on|off;  #是否开启gzip
gzip_buffers 32 4K| 16 8K #缓冲(压缩在内存中缓冲几块? 每块多大?)
gzip_comp_level [1-9] #推荐6 压缩级别(级别越高,压的越小,越浪费CPU计算资源)
gzip_disable #正则匹配UA 什么样的Uri不进行gzip
gzip_min_length 200 # 开始压缩的最小长度(再小就不要压缩了,意义不在)
gzip_http_version 1.0|1.1 # 开始压缩的http协议版本(可以不设置,目前几乎全是1.1协议)
gzip_proxied          # 设置请求者代理服务器,该如何缓存内容
gzip_types text/plain application/xml # 对哪些类型的文件用压缩 如txt,xml,html ,css
gzip_vary on|off  # 是否传输gzip压缩标志

4.各种压缩方式的区别

传统的压缩方案:实际上对注释、空格去除、换成一行;
nginx压缩方案:将重复性比较高的function等关键字设置长度较小的字典(a、b之类的),缺点是压缩非常的耗CPU资源。
如果图片压缩不清晰,可以使用分段组装,一张大图切割为多长小图,相当于多线程请求服务端,速度会快很多。


推荐阅读:
<<<高并发架构的整体思路
<<<一个网站访问慢的真正原因
<<<高并发情况下,接口的代码会存在哪些问题
<<<动静分离架构模式
<<<缓存策略汇总
<<<后端服务的雪崩效应及解决思路
<<<服务的隔离、降级和熔断
<<<服务限流之计数器方式
<<<服务限流之滑动窗口计数
<<<服务限流之令牌桶算法
<<<服务限流之漏桶算法
<<<漏桶算法和令牌桶算法的区别
<<<自定义封装限流算法
<<<应用级限流
<<<接入层限流

相关文章

网友评论

    本文标题:压缩静态资源减少带宽传输的方式

    本文链接:https://www.haomeiwen.com/subject/pbhrfrtx.html