Google PageSpeed Tools
Google PageSpeed is a family of tools by Google Inc, designed to help a website’s performance optimizations.[1] It was introduced at Developer Conference in 2010.[2][3] There are four main components of PageSpeed family tools: PageSpeed Module, also known as mod_pagespeed, PageSpeed Insights, PageSpeed Service, and PageSpeed Chrome DevTools extension. All of these components are built to identify faults in a website’s compliance with Google’s Web Performance Best Practices, as well as automate the adjustment process.
PageSpeed Module
Mod_pagespeed is an open-source Apache HTTP Server or Nginx webservers module, which automatically applies chosen filters to pages and associated assets, such as stylesheets, JavaScript, and HTML files, as well as to images and website cache requirements. The largest advantage of this module is that it does not require modifications to existing content or workflow,[4] meaning that all internal optimizations and changes to files are made on the server side, presenting modified files directly to the user. Each of 40+ filters corresponds to one of Google’s web performance best practices rules.
Since PageSpeed module is an open-source library, it is frequently updated by numerous developers from all over the world and can be deployed by any individual sites, hosting providers, or CDNs.[5]
Installation is relatively easy and can be done in two ways: from packages or build from source on the following supported platforms:
Ports
Other servers that offer a PageSpeed optimization module based on Google's PageSpeed SDK:
- Apache Traffic Server - ats_pagespeed [6]
- Microsoft Internet Information Services - IISpeed ←[7]
Filters
Pagespeed module filters are settings, based on which a webpage optimization rule is applied. They can be divided into five main categories:
- Stylesheets optimizations;
- Javascript files optimizations;
- Images optimizations;
- HTML optimizations;
- Tracking activity filters.
Stylesheets optimizations
These filters change CSS files to optimized versions through making them smaller, combining several into one or extending cache lifetime:
Filter Name | Description |
---|---|
Combine CSS | If a page requires several stylesheets, this filter combines them into one stylesheet, decreasing the number of requests to a web server |
Extend Cache for Stylesheets | Increases the time that cached CSS files are to be kept in local storage, preventing extra requests and data loading upon a user’s return to the same webpage |
Flatten CSS Imports | Replaces all “@import” rules with the contents of imported files, if the size of the affected stylesheet files is less than the number of pre-determined bytes set by the sub-filter “CssFlattenMaxBytes”. This optimization is designed for reducing the number of requests by the web browser |
Inline @import To Link | Transforms “@import” rules into corresponding “<link>” tags. Mostly is used for proper work of later applied filters |
Inline CSS | Inserts small external stylesheet files’ content directly into HTML document, therefore reducing number of requests. This filter is applied only to stylesheets that are smaller than a size set by sub-filter “CssInlineMaxBytes” |
Inline Google Fonts API CSS | Inserts any stylesheets, used by Google Font API, if they are smaller than a value, which is set by sub-filter “CssInlineMaxBytes” |
Move CSS Above Scripts | Rearranges the order of loading stylesheets and javascript files, assuring that scripts are not blocking CSS resources. Improves rendering of a webpage, leading to shorter loading times[8] |
Move CSS to Head | Places stylesheets inclusion before any <body> elements are introduced, which decreases the loading time by eliminating re-flows of a webpage[9] |
Outline CSS | Experimental filter which puts inlined CSS rules on an external resource. The idea behind it is to create parallel connections to different servers rather than consecutive ones to the same host. This filter will try to outline only stylesheets bigger than set by sub-filter “CssOutlineMinBytes” |
Prioritize Critical CSS | Replaces stylesheets with inlined CSS rules, containing only necessary rules for initial viewport, and defers the rest of CSS rules to be loaded after the page is fully loaded |
Rewrite CSS | Allows other stylesheet and image related filters to be applied to local stylesheets. Additionally, this filter minifies all CSS. Has impact on payload size |
Rewrite Style Attributes | Implements the same optimization as “Rewrite CSS” filter to all rules, declared under “<style>” attributes |
Javascript files optimizations
These filters are applied to Javascript files, re-referring them to optimized files:
Filter Name | Description |
---|---|
Canonicalize Javascript libraries | Replaces popular javascript libraries with remote latest free versions, from Google Hosted Libraries by default. This potentially decreases the number of requests to servers in the future, since these libraries might be in user’s browser cache from any other websites |
Combine Javascript | Combines multiple javascript files into one, therefore decreasing total number of requests by a browser |
Defer Javascript | Postpones loading and executing javascript files until a page is loaded. This ensures that the loading of visible content is not interrupted |
Extend Cache for Javascript | Increases the period of time in which cached javascript files are to be kept in local storage, preventing extra requests and data loading upon user return to the same webpage |
Include Javascript Source Maps | Creates the “map” between minified and original javascript files for improved readability during the debugging process |
Inline Javascript | Inserts small external javascript files’ content directly into HTML document, therefore reducing the number of requests. This filter is applied only to javascript files smaller than the size set by sub-filter “JsInlineMaxBytes” |
Minify External Javascript, Minify Internal Javascript | Removes all comments, whitespaces, redundant and obsolete rules, which reduces the total number of bytes loaded |
Outline Javascript | Experimental filter which puts inlined javascript on an external resource. The idea behind it is to create parallel connections to different servers rather than consecutive ones to the same host. This filter will only try to outline scripts bigger than a size set by sub-filter “JsOutlineMinBytes” |
Images optimizations
Image optimization filters are built to reduce the size of loading graphics:
Filter Name | Description |
---|---|
Deduplicate Inlined Images | Eliminates repetitive data loading of the same inlined images, improving the number of requests and transfer size |
Extend Cache for Images | Increases the time that cached images are to be kept in local storage, preventing extra requests and data loading upon user return to the same webpage |
Inline Preview Images | Generates low quality versions of a number of inlined images set by sub-filter “MaxInlinedPreviewImagesIndex”, unless the size of the images is higher than the value set by sub-filter “MinImageSizeLowResolutionBytes”, improving user experience. After the page is fully loaded, images are switched to higher quality |
Lazyload Images | Postpones loading of images, which are not in a user’s initial viewport, decreasing the number of browser’s requests |
Inline Images | Provides a way to include image data into actual webpage code as if an image was an external resource, eliminating extra connections to retrieve image data |
Convert GIFs to PNG | Loselessly converts non-animated gifs into pngs, decreasing data size |
Convert JPEGs to Progressive JPEGs | Transforms automatically generated larger non-progressive jpeg images into smaller progressive type |
Recompress JPEGs | Recompresses automatically generated jpeg images if their original compression quality was higher than value, set by sub-filters “ImageRecompressionQuality” or “JpegRecompressionQuality”. This allows a decrease in payload |
Recompress PNGs | Losslessly converts png images into images with higher compression |
Recompress WEBPs | Replaces webp images with smaller re-compressed versions in browsers which support webp format |
Strip Image Color Profile | Removes all images’ color profile information, since it is not supported by most of the browsers |
Strip Image Meta Data | Removes EXIF meta data from all image files of a webpage |
Reduce JPEG Subsampling | Reduces color sampling rate to 4:2:0 due to human vision sensitivity to changes in brightness, but not in hue or saturation. This allows to significantly reduce image size |
Convert PNGs to JPEGs | Substitutes png images without transparency channel with smaller jpeg equivalents |
Resize Images | Replaces any image with dimensions larger than certain “width” and “height” attributes with a smaller one |
Convert JPEGs to WEBPs | Converts jpeg images into much smaller webp format if supported by browser |
Convert JPEGs to WEBPs Lossless | Converts jpeg images into much smaller webp format if supported by browser and if image is insensitive to compression noise |
Insert Image Dimensions | Automatically adds “width” and “height” attributes for “<img>” tags if they were absent |
Resize Images To Rendered Dimensions | Attempts to resize any image to its rendered dimensions, ignoring any “width” or “height” attributes |
Sprite Images | Combines all background images from stylesheet rules into one large image to reduce the number of requests by the browser |
HTML optimizations
This group of filters simply rewrites the contents of HTML files to reduce their size and assure latest best web practices compliance.
Filter Name | Description |
---|---|
Add Head | Adds a <head> html tag if it is not found before <body> html tag, needed mainly for other filters to work properly, since a number of them add or modify data in the area marked with the <head> tag |
Collapse Whitespace | Deletes extra and unnecessary whitespaces between operators in html code |
Combine Heads | Groups the content of several <head> tags into one if there multiple tags, preventing incorrect browser workflow |
Convert Meta Tags | Adds matching present meta tags response header, avoiding reparsing delays due to some browsers “http-equiv” attribute requirements |
Elide Attributes | Removes html tags’ attributes with values equal to default values, which reduces the total amount of data transferred |
Local Storage Cache | Saves inlined resources into browser’s local storage on the first view of a page, and loads them from local storage on subsequent views rather than inlining them again. This reduces the number of requests |
Pedantic | Forces Pagespeed Module optimizations to be more HTML4 compliant |
Remove Comments | Deletes HTML comments, created by developers for easier readability and navigation through HTML code |
Remove Quotes | Deletes quotation marks from HTML attributes, reducing the size of html files |
Trim URLs | Substitutes absolute URLs with relative ones to the base URL of the page |
Tracking activity filters
Short list of filters below aim at optimizations of Google Analytics tracking communications with a website
Filter Name | Description |
---|---|
Add Instrumentation | Allows measurement of the time in which a client loads and renders the page, for analytical and tracking purposes |
Async Google Analytics snippet | Forces the Google Analytics tracking code to load asynchronously, therefore allowing critical resources not to be blocked during loading |
Insert Google Analytics | Adds tracking asynchronous snippet code to track any activities on website with Google Analytics Reporting Tools |
Other available filters
- Rewrite Domains
- Run Experiment Module
- Pre-Resolved DNS
- Extend PDFs Cache
Speed Impact
Even though Pagespeed Module is a free, open-source project and can be deployed and customized by any web developer, it showed the most significant impact on decreasing webpage loading times, payload size, and number of requests when compared to other options in the industry. According to several researchers, mod_pagespeed can reduce loading times by up to 80%,[10] amount of bytes on a wire can be decreased by 30% and the number of total requests can drop by over 20%. Since many search engines, including Google, employ a ranking algorithm which is affected by a page’s loading speed, these optimizations can impact a website’s placement in search results.[11][12] As of February 2015, Google has begun testing “Slow” labels on mobile devices[13] for websites that exceed a certain amount of loading time, prompting developers to examine ways to increase a page’s load speed.
PageSpeed Insights
PageSpeed Insights is an online tool which helps in identifying performance best practices on any given website, provides suggestions on a webpage’s optimizations, and suggests overall ideas of how to make a website faster.[14] This tool can be accessed directly in any browser. Per URL request, it grades webpage performance on a scale from 1 to 100 and provides a report on suggested optimizations, divided into categories of high, medium, and low priorities.
PageSpeed Chrome Extension
Pagespeed extension is an extension of Chrome Browser and is a part of Google Chrome Developer Tools. Visitors who use PageSpeed regularly can view all given metrics by PageSpeed Insights directly in a browser and download webpage resources, optimized according to web performance best practices.
PageSpeed Service
PageSpeed service was a commercial product, provided by Google Inc. The service was offered free of charge, since it was still officially in beta version. Service included all Pagespeed Module optimizations and use of Google servers’ infrastructure.[15] Google announced the deprecation of PageSpeed service on 5 May 2015[16] and turned it off on 3 August 2015.[17]
References
- ↑ Ivanovs, Alex. "PageSpeed Module: Improving Your Websites' Performance". http://www.huffingtonpost.com/. The Huffington Post. Retrieved 23 March 2015.
- ↑ Kerner, Sean Michael. "Google Speeds Up the Web with Apache Web Server Module". http://www.serverwatch.com/news/. Retrieved 23 March 2015.
- ↑ Ram, Ramani. "Page Speed Service: Web performance, delivered". http://googlecode.blogspot.com/. Retrieved 17 March 2015.
- ↑ Edwards, Ben. "Authoring critical above-the-fold CSS". https://benedfit.com/. Retrieved 23 March 2015.
- ↑ "PageSpeed Insights SDK". https://code.google.com/. Google Inc. Retrieved 23 March 2015.
- ↑ "ats_pagespeed". https://www.iispeed.com/. IISpeed B.V. Inc.
- ↑ "IISpeed". https://www.iispeed.com/. IISpeed B.V. Inc.
- ↑ Liversidge, Chris. "Breaking Down Page Speed Events For SEO Gain". http://searchengineland.com/. Search Engine Land. Retrieved 23 March 2015.
- ↑ Andersen, Anders; Jarlund, Tobias. "Addressing The Responsive Images Performance Problem: A Case Study". http://www.smashingmagazine.com/. Smashing Magazine. Retrieved 23 March 2015.
- ↑ Kustov, Dmitrii. "Pagespeed Module = Supersonic Website". https://www.hyperlinksmedia.com/learning-center/. Boost Business Friday. Retrieved 20 March 2015.
- ↑ Enge, Eric. "Case Study: Impact of Code Cleanup on Site Traffic". http://searchenginewatch.com/. Search Engine Watch. Retrieved 23 March 2015.
- ↑ Kuchler, Margaret. "The Growing Need For Speed: How Site Performance Increasingly Influences Search Rankings". http://www.retailtouchpoints.com/. Retail Touch Points. Retrieved 23 March 2015.
- ↑ Barry, Shwartz. "Google Testing A Red "Slow" Label In The Search Results For Slower Sites". http://searchengineland.com/. Retrieved 17 March 2015.
- ↑ Wagner, Janet. "GOOGLE RELEASES PAGESPEED INSIGHTS API V2". http://www.programmableweb.com/. Programmable Web. Retrieved 23 March 2015.
- ↑ Lardinois, Frederic. "Google Updates PageSpeed Service, Promises To "Turbocharge Your Website"". http://techcrunch.com/. The Tech Crunch. Retrieved 23 March 2015.
- ↑ https://groups.google.com/forum/#!topic/page-speed-service-discuss/h4jyUpv6Bc8
- ↑ https://developers.google.com/speed/pagespeed/service/Deprecation