Collapse Whitespace
Configuration
The 'Collapse Whitespace' filter is enabled by specifying:
- Apache:
ModPagespeedEnableFilters collapse_whitespace
- Nginx:
pagespeed EnableFilters collapse_whitespace;
in the configuration file.
Description
The 'Collapse Whitespace' filter reduces bytes transmitted in an HTML file by removing unnecessary whitespace.
Operation
The filter reduces the transfer size of HTML files by replacing contiguous whitespace with a single whitespace character. Because HTML is often formatted with extra whitespace for human readability or as an incidental effect of the templates used to generate it, this technique can reduce the number of bytes needed to transmit HTML resources.For example, if the HTML document looks like this:
<html>
<head>
<title>Hello, world! </title>
<script> var x = 'Hello, world!';</script>
</head>
<body>
Hello, World!
<pre>
Hello,
World!
</pre>
</body>
</html>
Then PageSpeed will rewrite it into:
<html>
<head>
<title>Hello, world!</title>
<script> var x = 'Hello, world!';</script>
</head>
<body>
Hello, World!
<pre>
Hello,
World!
</pre>
</body>
</html>
Example
You can see the filter in action at www.modpagespeed.com on this
example.
Requirements
The 'Collapse Whitespace' filter will not modify whitespace appearing within
<pre>, <textarea>, <script> and
<style>. Extraneous whitespace within inline scripts and styles can be
removed using the JS Minify and
CSS Minify filters.
The 'Collapse Whitespace' filter will attempt to preserve newline characters to an extent -- a contiguous sequence of whitespace with at least one newline anywhere in it will always collapse to a single new line. Why? See the collapse newlines entry in the FAQ.
Risks
Although contiguous whitespace in HTML (beyond the first space) is normally ignored by the
browser outside of tags like <pre> and <textarea>,
one can use CSS properties such as "white-space: pre" to make the browser
preserve whitespace within a portion of the document: compare this example
with
and
without
the filter enabled.
Use of such properties is relatively rare, however, the 'Collapse Whitespace' filter is not yet CSS-aware, so any pages that might use such CSS properties (either statically or dynamically) should not use this filter at this time.