blob: 68f7882e85c05bed8a12082ab487d3a606f70c8e [file] [log] [blame]
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>PageSpeed Filters</title>
<link rel="stylesheet" href="doc.css">
</head>
<body>
<!--#include virtual="_header.html" -->
<div id=content>
<h1>PageSpeed Filters</h1>
<p>
PageSpeed improves web page latency by changing the resources on that
web page to implement web performance
<a href="/speed/docs/best-practices/rules_intro">best practices</a>. Each sort
of change that PageSpeed makes is embodied in a <em>filter</em>. The filters
are run in a pre-defined order, but can be enabled and disabled in the server
<a href="configuration">configuration file</a>.
</p>
<p>
Some filters simply alter HTML content, such as removing excess
whitespace, attributes, or attribute values that will be ignored.
</p>
<p>
Other filters change references to CSS, JavaScript, or images to point
to more optimized versions, because they:
</p>
<ul>
<li>are smaller,</li>
<li>combine multiple files into one, and</li>
<li>extend the cache lifetime</li>
</ul>
<h2>Categories of filters</h2>
<p>
Filters are of many categories that fit under performance best practices.
The current set of filters fits in these categories as follows:
</p>
<a href="/speed/docs/best-practices/caching">
<h3>Optimize Caching</h3>
</a>
<ul>
<li><a href="filter-canonicalize-js">Canonicalize JavaScript Libraries</a>
<li><a href="filter-cache-extend">Extend Cache</a></li>
<li><a href="filter-cache-extend-pdfs">Extend Cache PDFs</a></li>
<li><a href="filter-local-storage-cache">Local Storage Cache</a></li>
<li><a href="filter-css-outline">Outline CSS</a></li>
<li><a href="filter-js-outline">Outline JavaScript</a></li>
</ul>
<a href="/speed/docs/best-practices/rtt">
<h3>Minimize Round Trip Times</h3>
</a>
<ul>
<li><a href="filter-css-combine">Combine CSS</a></li>
<li><a href="filter-flatten-css-imports">Flatten CSS @imports</a></li>
<li><a href="filter-css-inline">Inline CSS</a></li>
<li><a href="filter-css-inline-google-fonts">Inline Google Fonts API CSS</a></li>
<li><a href="filter-js-combine">Combine JavaScript</a></li>
<li><a href="filter-js-inline">Inline JavaScript</a></li>
<li><a href="filter-css-above-scripts">Move CSS Above Scripts</a></li>
<li><a href="domains#shard">Configuration file directive to
shard domains</a></li>
<li><a href="filter-image-sprite">Sprite Images</a></li>
<li><a href="filter-insert-dns-prefetch">Pre-Resolve DNS</a></li>
</ul>
<a href="/speed/docs/best-practices/request">
<h3>Minimize Request Overhead</h3>
</a>
<ul>
<li><a href="filter-domain-rewrite">Rewrite Domains</a></li>
<li><a href="domains#mapping_rewrite">Configuration
file directive to map domains</a></li>
</ul>
<a href="/speed/docs/best-practices/payload">
<h3>Minimize Payload Size</h3>
</a>
<ul>
<li><a href="filter-whitespace-collapse">Collapse Whitespace</a></li>
<li><a href="filter-head-combine">Combine Heads</a></li>
<li><a href="filter-attribute-elide">Elide Attributes</a></li>
<li><a href="filter-js-minify">Minify JavaScript</a></li>
<li><a href="filter-image-optimize">Optimize Images</a></li>
<li><a href="filter-prioritize-critical-css">Prioritize Critical CSS</a></li>
<li><a href="filter-dedup-inlined-images">Deduplicate Inlined Images</a></li>
<li><a href="filter-comment-remove">Remove Comments</a></li>
<li><a href="filter-quote-remove">Remove Quotes</a></li>
<li><a href="filter-css-rewrite">Rewrite CSS</a></li>
<li><a href="filter-rewrite-style-attributes"
>Rewrite Style Attributes</a></li>
<li><a href="filter-trim-urls">Trim URLs</a></li>
</ul>
<a href="/speed/docs/best-practices/rendering">
<h3>Optimize Browser Rendering</h3></a>
<ul>
<li><a href="filter-convert-meta-tags">Convert Meta Tags</a></li>
<li><a href="filter-js-defer">Defer Javascript</a></li>
<li><a href="filter-hint-preload-subresources"
>Hint Resource Preloading</a></li>
<li><a href="filter-inline-preview-images">Inline Preview Images</a></li>
<li><a href="filter-lazyload-images">Lazily Load Images</a></li>
<li><a href="filter-image-responsive">Make Images Responsive</a></li>
<li><a href="filter-css-to-head">Move CSS to Head</a></li>
<li><a href="filter-image-optimize">Optimize Images</a></li>
<li><a href="reference-image-optimize#progressive"
>Convert JPEG to Progressive</a></li>
<li><a href="filter-rewrite-style-attributes"
>Rewrite Style Attributes</a></li>
</ul>
<h3>Other</h3>
<ul>
<li><a href="filter-head-add">Add Head</a></li>
<li><a href="filter-instrumentation-add">Add Instrumentation</a></li>
<li><a href="filter-source-maps-include"
>Include JavaScript Source Maps</a></li>
<li><a href="filter-css-inline-import">Inline @import to Link</a></li>
<li><a href="filter-insert-ga">Insert Google Analytics Snippet</a></li>
<li><a href="filter-make-show-ads-async"
>Make Google AdSense Async</a></li>
<li><a href="filter-make-google-analytics-async"
>Make Google Analytics Async</a></li>
<li><a href="filter-pedantic">Pedantic</a></li>
<li><a href="module-run-experiment">Run Experiment</a></li>
</ul>
<p>
In some cases, a filter such as 'Optimize Images' helps both minimize request overhead and optimize browser rendering.
</p>
</div>
<!--#include virtual="_footer.html" -->
</body>
</html>