Affiliation:
1. Royal Holloway, University of London, Egham, UK
2. TU Kaiserslautern and University of Oxford
3. University of Oxford, Oxford, UK
Abstract
Minification is a widely accepted technique that aims at reducing the size of the code transmitted over the web. This article concerns the problem of semantic-preserving minification of Cascading Style Sheets (CSS)—the
de facto
language for styling web documents—based on merging similar rules.
The cascading nature of CSS makes the semantics of CSS files sensitive to the ordering of rules in the file. To automatically identify rule-merging opportunities that best minimise file size, we reduce the rule-merging problem to a problem concerning “CSS-graphs,” i.e., node-weighted bipartite graphs with a dependency ordering on the edges, where weights capture the number of characters.
Constraint solving plays a key role in our approach. Transforming a CSS file into a CSS-graph problem requires us to extract the dependency ordering on the edges (an NP-hard problem), which requires us to solve the selector intersection problem. To this end, we provide the first full formalisation of CSS3 selectors (the most stable version of CSS) and reduce their selector intersection problem to satisfiability of quantifier-free integer linear arithmetic, for which highly optimised SMT-solvers are available. To solve the above NP-hard graph optimisation problem, we show how Max-SAT solvers can be effectively employed. We have implemented our rule-merging algorithm and tested it against approximately 70 real-world examples (including examples from each of the top 20 most popular websites). We also used our benchmarks to compare our tool against six well-known minifiers (which implement other optimisations). Our experiments suggest that our tool produced larger savings. A substantially better minification rate was shown when our tool is used together with these minifiers.
Funder
H2020 European Research Council
Google
Engineering and Physical Sciences Research Council
Publisher
Association for Computing Machinery (ACM)
Reference73 articles.
1. Alexa Internet. 2017. Alexa Top 500 Global Sites. Retrieved from https://www.alexa.com/topsites. Alexa Internet. 2017. Alexa Top 500 Global Sites. Retrieved from https://www.alexa.com/topsites.
2. Tab Atkins Jr. Elika J. Etemad and Florian Rivoal. 2017. CSS Snapshot 2017. Retrieved from https://www.w3.org/TR/css-2017. Tab Atkins Jr. Elika J. Etemad and Florian Rivoal. 2017. CSS Snapshot 2017. Retrieved from https://www.w3.org/TR/css-2017.
3. XPath satisfiability in the presence of DTDs
Cited by
4 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. A longitudinal analysis of bloated Java dependencies;Proceedings of the 29th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering;2021-08-18
2. Reasoning about recursive tree traversals;Proceedings of the 26th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming;2021-02-17
3. Chapter 24. Maximum Satisfiabiliy;Frontiers in Artificial Intelligence and Applications;2021-02-02
4. Challenges of Resolving Merge Conflicts: A Mining and Survey Study;IEEE Transactions on Software Engineering;2021