java - 缩小进度条(数据 :image/gif;base64)

标签 java css compression minify

我正在尝试缩小我所有的 css 文件,但其中一行出现了问题。它是.ui-progressbar .ui-progressbar-overlay 的后台url:

background:url("data:image/gif;base64,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");

我在这个实现中使用颗粒插件进行压缩(第一层):

public class AcceleratorCompressTag extends CompressTag{

    public static final String COMPREST_TAG_CONTENT = CompressTag.class.getName() + "Content";
    public static final String COMPREST_TAG_JS = CompressTag.class.getName() + "js";
    public static final String COMPREST_TAG_CSS = CompressTag.class.getName() + "css";
    private static final String NOT_PROCESS_PARAMETER = "granule";

    private static final String METHOD = null;
    private static final String ID = null;
    private static final String OPTIONS = null;
    private static final String BASEPATH = null;
    private String urlpattern = null;

    @Override
    public int doAfterBody() throws JspTagException {
        final HttpServletRequest httpRequest = new RemoveEncodingHttpServletRequestWrapper(
            (HttpServletRequest) pageContext.getRequest(), urlpattern);
        final BodyContent bodyContent = getBodyContent();
        final String oldBody = bodyContent.getString();
        bodyContent.clearBody();
        if (httpRequest.getParameter(NOT_PROCESS_PARAMETER) != null) {
            final boolean process = CompressorSettings.getBoolean(httpRequest.getParameter(NOT_PROCESS_PARAMETER), false);
            if (!process) {
                httpRequest.getSession().setAttribute(NOT_PROCESS_PARAMETER, Boolean.TRUE);
            } else {
                httpRequest.getSession().removeAttribute(NOT_PROCESS_PARAMETER);
            }
        }
        if (httpRequest.getSession().getAttribute(NOT_PROCESS_PARAMETER) != null) {
            try {
                getPreviousOut().print(oldBody);
            } catch (final IOException e) {
                throw new JspTagException(e);
            }
            return SKIP_BODY;
        }
        try {
            final CompressTagHandler compressor = new CompressTagHandler(ID, METHOD, OPTIONS, BASEPATH);
            final RealRequestProxy runtimeRequest = new RealRequestProxy(httpRequest);
            final String newBody = compressor.handleTag(runtimeRequest, runtimeRequest, oldBody);
            getPreviousOut().print(newBody);
        } catch (final Exception e) {
            throw new JspTagException(e);
        }
        return SKIP_BODY;
    }

    public String getUrlpattern() {
        return urlpattern;
    }

    public void setUrlpattern(final String urlpattern) {
        this.urlpattern = urlpattern;
    }
}

我的猜测是我需要在 Java 中执行 Base64 编码或者可能增加 JVM 的堆栈大小,因为我收到此错误:

SEVERE: Servlet.service() for servlet [CompressServlet] in context with path [] threw exception [Servlet execution threw an exception] with root cause
java.lang.StackOverflowError
        at java.util.regex.Pattern$GroupHead.match(Unknown Source)
        at java.util.regex.Pattern$Loop.match(Unknown Source)

谁能帮我解决这个问题?

最佳答案

尝试使用 CSS Minifier - 作者:chilts - @andychilton。

https://cssminifier.com/

关于java - 缩小进度条(数据 :image/gif;base64),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50964433/

相关文章:

javascript - .NET MVC Razor - 作用域样式

javascript - 使用 gzip 压缩 JavaScript

java - Apache Hadoop 字数统计错误

java - 由于外键约束,删除 JPA 对象失败?

java - Apache HttpClient 4.3 和 x509 客户端证书进行身份验证

java - 代号一签名组件图片上传

html - 将 div 拆分为 2 列

html - 我可以使用 CSS 为输入 radio 制作文本吗?

java - 简单的java算法对以下字符串进行编码/解码

algorithm - 估计数据的压缩大小