zoukankan      html  css  js  c++  java
  • Web服务器配置Gzip压缩提升网站性能

    前言:

    HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度。这一般是指WWW服务器中安装的一个功能,当有人来访问这个服务器中的网站时,服务器中的这个功能就将网页内容压缩后传输到来访的电脑浏览器中显示出来.一般对纯文本内容可压缩到原大小的40%.这样传输就快了,效果就是你点击网址后会很快的显示出来.当然这也会增加服务器的负载. 一般服务器中都安装有这个功能模块的。

    一、如何使用gzip

    gzip工作的原理很简单,通过http请求header增加一个“Accept-Encoding:gzip”指令来告知服务器需要进行gzip压缩,而服务器接收到该请求后,通过“Content-Encoding:gzip”来告知客户端进行gzip解压。

    对于Tomcat来说这是为:

     <Connector executor="tomcatThreadPool"
                   port="80" protocol="HTTP/1.1" 
                   connectionTimeout="20000" 
                   redirectPort="8443" URIEncoding="UTF-8"
                    compression="on"   
                compressionMinSize="2048"   
                noCompressionUserAgents="gozilla, traviata"   
                compressableMimeType="text/html,text/xml,application/javascript,text/css,text/plain,text/json"/>

    tomcat中的server.xml中对connector进行如上配置:

    1. compression="on" 开启压缩
    2. compressionMinSize="2048"大于2KB的文件才进行压缩
    3. noCompressionUserAgents="gozilla, traviata",对于这两种浏览器,不进行压缩
    4. compressableMimeType="text/html,text/xml,application/javascript,text/css,text/plain,text/json"表明支持html、xml、js、css、json等文件格式的压缩

    二、使用cache-control禁用代理缓存

    import java.io.IOException;
    
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletResponse;
    
    public class CacheControlFilter implements Filter {
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
                ServletException {
    
            HttpServletResponse resp = (HttpServletResponse) response;
    //      resp.setHeader("Expires", "Tue, 03 Jul 2001 06:00:00 GMT");
    //      resp.setDateHeader("Last-Modified", new Date().getTime());
    //      resp.setHeader("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0");
            resp.setHeader("Cache-Control", "max-age=0, private");
    //      resp.setHeader("Pragma", "no-cache");
    
            chain.doFilter(request, response);
        }
    
        @Override
        public void destroy() {
    
        }
    
        @Override
        public void init(FilterConfig arg0) throws ServletException {
    
        }
    }

    web.xml中添加:

     <filter>
            <filter-name>cacheControlFilter</filter-name>
            <filter-class>com.honzh.common.filter.CacheControlFilter</filter-class>
        </filter>
    
        <filter-mapping>
            <filter-name>cacheControlFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
  • 相关阅读:
    Android Glide详细使用教程
    mac上cocoapods安装与卸载
    Struts2+AJAX+JQuery 实现用户登入与注册功能
    Eclipse+ADT+Android SDK 搭建安卓开发环境
    CVE-2018-7600 Drupal核心远程代码执行漏洞分析
    利用kage把msf变成可视化远控平台
    在Red Hat Enterprise Linux 7.3上安装SQL Server 2017
    计算机取证之你必须要会用的24款工具
    StackStorm利用CORS null origin获得RCE (CVE-2019-9580)
    iOS/OSX漏洞分析和再现:CVE-2019-7286
  • 原文地址:https://www.cnblogs.com/dream-to-pku/p/7514032.html
Copyright © 2011-2022 走看看