Make Show Ads Asynchronous
Note: New feature as of 1.10.33.0.
Configuration
The 'Make Show Ads Asynchronous' filter is enabled by specifying:
- Apache:
ModPagespeedEnableFilters make_show_ads_async
- Nginx:
pagespeed EnableFilters make_show_ads_async;
Description
The filter rewrites pages that load
Google AdSense ads with the
synchronous show_ads.js snippet to load them with the
asynchronous adsbygoogle.js instead.
Loading AdSense asynchronously
helps keep ads
from delaying
the rest of the page content.
Operation
The filter looks for a Google AdSense snippet such as the following:
<div style="border: 2px solid blue;"> <script> google_ad_client = "ca-google"; google_ad_width = 728; google_ad_height = 90; google_ad_format = "728x90"; google_adtest = "on"; google_ad_type = "text"; </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> </div> <div style="border: 2px solid blue;"> <script> google_ad_client = "ca-google"; google_ad_width = 728; google_ad_height = 90; google_ad_format = "728x90"; google_adtest = "on"; google_ad_type = "text"; </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> </div>
and rewrites such snippets in-place to:
<div style="border: 2px solid blue;">
<script async
src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">
</script>
<ins
class="adsbygoogle"
style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-google"
data-ad-format="728x90"
data-ad-type="text"
data-adtest="on">
</ins>
<script>(adsbygoogle = window.adsbygoogle || []).push({})
</script>
</div>
<div style="border: 2px solid blue;">
<ins
class="adsbygoogle"
style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-google"
data-ad-format="728x90"
data-ad-type="text"
data-adtest="on">
</ins>
<script>(adsbygoogle = window.adsbygoogle || []).push({})
</script>
</div>
Example
You can see the filter in action at www.modpagespeed.com on this
example.
Requirements
This filter requires that ads specify a specific width and height
with google_ad_width and google_ad_height.
If google_ad_output is specified it must be set
to html. Alternate outputs like js
or json_html are not supported by adsbygoogle.js.
Ad snippets that don't meet these requirements won't be rewritten. Other ad
blocks on the same page will still be rewritten, loading
both show_ads.js and adsbygoogle.js. To avoid this,
we recommend not enabling this filter for pages that have a mixture of
eligible and ineligible ad blocks.
Risks
This filter is considered high risk.
The make_show_ads_async filter is experimental and has not had
extensive real-world testing. It manipulates JavaScript, which is always
risky, and if errors keep ads from displaying that could mean lost revenue for
your site.