通过约束求解进行CSS压缩(技术报告)
计算机科学中的逻辑
2018-12-12 v1 编程语言
摘要
压缩(minification)是一种被广泛接受的技术,旨在减小通过网络传输的代码大小。我们研究压缩层叠样式表(CSS)——即样式化Web文档的事实标准语言——的问题。传统上,CSS压缩器侧重于简单的语法变换(例如缩短颜色名称)。在本文中,我们提出一种基于合并CSS文件中相似规则的新压缩方法。我们考虑CSS文件的安全变换,其保持CSS文件的语义。CSS文件的语义对文件中规则的顺序敏感。为自动识别能最大程度减小文件大小的规则合并机会,我们将规则合并问题归约为CSS图上的问题,即带边依赖序的节点加权二部图,其中权重刻画字符数(例如在选择器或属性声明中)。粗略地说,相应的CSS图问题涉及最小化覆盖CSS图并尊重边序的双团(完全二部子图)序列的总权重。我们提供了CSS3选择器的首个完整形式化,并将依赖检测归约为无量词整数线性算术的可满足性,对此已有高度优化的SMT求解器可用。为解决上述NP困难图优化问题,我们展示了如何有效使用Max-SAT求解器。我们使用Max-SAT和SMT求解器作为后端实现了我们的算法,并针对约70个真实世界示例(包括前20个最流行网站)进行了测试。在我们的基准测试中,我们的工具比六种知名压缩器(其不执行规则合并,但支持许多其他优化)产生更大的节省。我们的实验还表明,与这六种压缩器之一结合使用可实现更好的节省。
引用
@article{arxiv.1812.02989,
title = {CSS Minification via Constraint Solving (Technical Report)},
author = {Matthew Hague and Anthony W. Lin and Chih-Duo Hong},
journal= {arXiv preprint arXiv:1812.02989},
year = {2018}
}