New mod_pagespeed: cache advances, progressive JPEGs
    
    
    
    
    
      |  | 
      | Bharath | 
      
      |  | 
      | Jan-Willem | 
      
      |  | 
      | Joshua | 
      
By Joshua Marantz, Jan-Willem Maessen, and Bharath
      Bhushan, PageSpeed Team
      
      When mod_pagespeed launched in November 2010, one of its benefits was to help websites better
      
exploit
      browser caching by signing URLs with the resource content hash. This improves the
      user experience coming back to the same site, and navigating within a site.
      
      In mod_pagespeed 1.2 we have released two new features that improve the caching experience for
      users coming to a site for the first time: 
canonicalize_javascript_libraries
      and 
insert_dns_prefetch.
      For additional speedups, converting jpegs to progressive format has been added to the Core
      Filter Set, and the scope of optimization has been extended to include resources served by
      external servers, even if they are not running mod_pagespeed.
      
      
Your web page loads faster when JQuery is preloaded in users' browser
      
      Numerous web sites use common JavaScript libraries such as jQuery and jQuery UI. But when one
      library is stored on many sites, browsers end up re-downloading that library for each new site
      – a waste of time and bandwidth. The new 
canonicalize_javascript_libraries
      filter in mod_pagespeed finds such libraries on your site and replaces them with links to the
      equivalent libraries on 
ajax.googleapis.com.
      With the optimization, a browser will notice that your site is requesting the library from the
      same shared library provider as a previous site it visited, and will use the copy in its
      cache. 
      
      It’s possible to do this by hand, but there are a number of reasons why you might prefer to
      automate the process. Most important is that you may be using third-party code on your web
      sites that includes some of these libraries. Using 
canonicalize_javascript_libraries
      lets you replace these with hosted versions without having to touch third-party code. It also
      lets you use local, un-minified JavaScript source code for these libraries while you are
      debugging your site, and then transition automatically to using minified hosted code when you
      deploy. The filter spots external libraries using a hash signature; we’ve added a new
      configuration file, pagespeed_libraries.conf, that stores these signatures, so that you can
      upgrade the signature configuration without disrupting the rest of your apache
      installation.
      
      
Resolving DNS entries early for critical assets saves hundreds of
      milliseconds
      
      DNS resolution time varies from <1ms for locally cached results, to hundreds of
      milliseconds due to the cascading nature of DNS. This can contribute significantly to total
      page load time. Below is a WebPagetest waterfall showing how DNS lookup time can affect page
      load time.
      
      The new 
insert_dns_prefetch
      filter inserts 
<link rel="dns-prefetch"> tags to allow
      the browser to pre-resolve DNS for resources on the page. The waterfall below shows the
      improvement after inserting the hints.
      
      
      <link rel="dns-prefetch"> is supported on 
Chrome,
      
Firefox
      and 
Internet
      Explorer.
      
      
Improved performance by optimizing external resources and progressive
      JPEG
      
      In addition to these new capabilities, mod_pagespeed 1.2 can 
proxy
      and optimize resources from trusted domains. This feature enables you to optimize
      resources even from servers that don't run mod_pagespeed. Beyond compressing and
      cache-extending such resources, this can improve performance of sites running SPDY where the
      best practices for performance are to serve all resources from the same domain (see 
mod_spdy).
      
      Further, 
convert_jpeg_to_progressive
      is now a ‘core’ filter. Large JPEG images are now transcoded to progressive. This both
      improves the browser experience and makes such files smaller.
      
      To see more details about the release, check out the 
release
      notes and 
mod_pagespeed
      download page.
      
      
      
Joshua Marantz runs
      Google’s PageSpeed team in Cambridge, MA, which is dedicated to making the web faster for
      everyone. Josh has been working on making software run fast for several decades, at Google and
      before that on accelerated chip simulation. 
      
      Jan Maessen wrote the earliest version of the image and JavaScript filters in mod_pagespeed
      and has been with the team ever since. Before joining Google, he was a co-designer and library
      implementer for the Fortress programming language.
      
      Bharath Bhushan works on making website performance better. He has a Masters in CS from IIT
      Madras, India.
      
      Posted by Scott Knaster,
      Editor