Monday, May 20, 2024
136
rated 0 times [  139] [ 3]  / answers: 1 / hits: 14884  / 9 Years ago, tue, october 13, 2015, 12:00:00

I've enabled mod_pagespeed, and now get this extra javascript added around the place where my HTML logo is defined. I'm not sure what this code does and how I can disable it?



<a href=http://www.example.com/ id=logo><script pagespeed_no_defer=>//<![CDATA[
(function(){var g=this,h=function(b,d){var a=b.split(.),c=g;a[0]in c||!c.execScript||c.execScript(var +a[0]);for(var e;a.length&&(e=a.shift());)a.length||void 0===d?c[e]?c=c[e]:c=c[e]={}:c[e]=d};var l=function(b){var d=b.length;if(0<d){for(var a=Array(d),c=0;c<d;c++)a[c]=b[c];return a}return[]};var m=function(b){var d=window;if(d.addEventListener)d.addEventListener(load,b,!1);else if(d.attachEvent)d.attachEvent(onload,b);else{var a=d.onload;d.onload=function(){b.call(this);a&&a.call(this)}}};var n,p=function(b,d,a,c,e){this.f=b;this.h=d;this.i=a;this.c=e;this.e={height:window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,width:window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth};this.g=c;this.b={};this.a=[];this.d={}},q=function(b,d){var a,c,e=d.getAttribute(pagespeed_url_hash);if(a=e&&!(e in b.d))if(0>=d.offsetWidth&&0>=d.offsetHeight)a=!1;else{c=d.getBoundingClientRect();var f=document.body;a=c.top+(pageYOffsetin window?window.pageYOffset:(document.documentElement||f.parentNode||f).scrollTop);c=c.left+(pageXOffsetin window?window.pageXOffset:(document.documentElement||f.parentNode||f).scrollLeft);f=a.toString()+,+c;b.b.hasOwnProperty(f)?a=!1:(b.b[f]=!0,a=a<=b.e.height&&c<=b.e.width)}a&&(b.a.push(e),b.d[e]=!0)};p.prototype.checkImageForCriticality=function(b){b.getBoundingClientRect&&q(this,b)};h(pagespeed.CriticalImages.checkImageForCriticality,function(b){n.checkImageForCriticality(b)});h(pagespeed.CriticalImages.checkCriticalImages,function(){r(n)});var r=function(b){b.b={};for(var d=[IMG,INPUT],a=[],c=0;c<d.length;++c)a=a.concat(l(document.getElementsByTagName(d[c])));if(0!=a.length&&a[0].getBoundingClientRect){for(c=0;d=a[c];++c)q(b,d);a=oh=+b.i;b.c&&(a+=&n=+b.c);if(d=0!=b.a.length)for(a+=&ci=+encodeURIComponent(b.a[0]),c=1;c<b.a.length;++c){var e=,+encodeURIComponent(b.a[c]);131072>=a.length+e.length&&(a+=e)}b.g&&(e=&rd=+encodeURIComponent(JSON.stringify(s())),131072>=a.length+e.length&&(a+=e),d=!0);t=a;if(d){c=b.f;b=b.h;var f;if(window.XMLHttpRequest)f=new XMLHttpRequest;else if(window.ActiveXObject)try{f=new ActiveXObject(Msxml2.XMLHTTP)}catch(k){try{f=new ActiveXObject(Microsoft.XMLHTTP)}catch(u){}}f&&(f.open(POST,c+(-1==c.indexOf(?)??:&)+url=+encodeURIComponent(b)),f.setRequestHeader(Content-Type,application/x-www-form-urlencoded),f.send(a))}}},s=function(){var b={},d=document.getElementsByTagName(IMG);if(0==d.length)return{};var a=d[0];if(!(naturalWidthin a&&naturalHeightin a))return{};for(var c=0;a=d[c];++c){var e=a.getAttribute(pagespeed_url_hash);e&&(!(e in b)&&0<a.width&&0<a.height&&0<a.naturalWidth&&0<a.naturalHeight||e in b&&a.width>=b[e].k&&a.height>=b[e].j)&&(b[e]={rw:a.width,rh:a.height,ow:a.naturalWidth,oh:a.naturalHeight})}return b},t=;h(pagespeed.CriticalImages.getBeaconData,function(){return t});h(pagespeed.CriticalImages.Run,function(b,d,a,c,e,f){var k=new p(b,d,a,e,f);n=k;c&&m(function(){window.setTimeout(function(){r(k)},0)})});})();pagespeed.CriticalImages.Run('/mod_pagespeed_beacon','http://www.example.com/slug','SLoDkQnME-',true,false,'gxYRJPh80JY');
//]]></script><img src=http://www.example.com/xlogo.png.pagespeed.ic.GAQP-mof5d.png alt=Logo pagespeed_url_hash=4083345942 onload=pagespeed.CriticalImages.checkImageForCriticality(this);></a>


Here's a fiddle: http://jsfiddle.net/vdkdekuu/ and a beautified version:



(function() {
var g = this,
h = function(b, d) {
var a = b.split(.),
c = g;
a[0] in c || !c.execScript || c.execScript(var + a[0]);
for (var e; a.length && (e = a.shift());) a.length || void 0 === d ? c[e] ? c = c[e] : c = c[e] = {} : c[e] = d
};
var l = function(b) {
var d = b.length;
if (0 < d) {
for (var a = Array(d), c = 0; c < d; c++) a[c] = b[c];
return a
}
return []
};
var m = function(b) {
var d = window;
if (d.addEventListener) d.addEventListener(load, b, !1);
else if (d.attachEvent) d.attachEvent(onload, b);
else {
var a = d.onload;
d.onload = function() {
b.call(this);
a && a.call(this)
}
}
};
var n, p = function(b, d, a, c, e) {
this.f = b;
this.h = d;
this.i = a;
this.c = e;
this.e = {
height: window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight,
width: window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth
};
this.g = c;
this.b = {};
this.a = [];
this.d = {}
},
q = function(b, d) {
var a, c, e = d.getAttribute(pagespeed_url_hash);
if (a = e && !(e in b.d))
if (0 >= d.offsetWidth && 0 >= d.offsetHeight) a = !1;
else {
c = d.getBoundingClientRect();
var f = document.body;
a = c.top + (pageYOffset in window ? window.pageYOffset : (document.documentElement || f.parentNode || f).scrollTop);
c = c.left + (pageXOffset in window ? window.pageXOffset : (document.documentElement || f.parentNode || f).scrollLeft);
f = a.toString() + , + c;
b.b.hasOwnProperty(f) ? a = !1 : (b.b[f] = !0, a = a <= b.e.height && c <= b.e.width)
}
a && (b.a.push(e), b.d[e] = !0)
};
p.prototype.checkImageForCriticality = function(b) {
b.getBoundingClientRect && q(this, b)
};
h(pagespeed.CriticalImages.checkImageForCriticality, function(b) {
n.checkImageForCriticality(b)
});
h(pagespeed.CriticalImages.checkCriticalImages, function() {
r(n)
});
var r = function(b) {
b.b = {};
for (var d = [IMG, INPUT], a = [], c = 0; c < d.length; ++c) a = a.concat(l(document.getElementsByTagName(d[c])));
if (0 != a.length && a[0].getBoundingClientRect) {
for (c = 0; d = a[c]; ++c) q(b, d);
a = oh= + b.i;
b.c && (a += &n= + b.c);
if (d = 0 != b.a.length)
for (a += &ci= + encodeURIComponent(b.a[0]), c = 1; c < b.a.length; ++c) {
var e = , + encodeURIComponent(b.a[c]);
131072 >= a.length + e.length && (a += e)
}
b.g && (e = &rd= + encodeURIComponent(JSON.stringify(s())), 131072 >= a.length + e.length && (a += e), d = !0);
t = a;
if (d) {
c = b.f;
b = b.h;
var f;
if (window.XMLHttpRequest) f = new XMLHttpRequest;
else if (window.ActiveXObject) try {
f = new ActiveXObject(Msxml2.XMLHTTP)
} catch (k) {
try {
f = new ActiveXObject(Microsoft.XMLHTTP)
} catch (u) {}
}
f && (f.open(POST, c + (-1 == c.indexOf(?) ? ? : &) + url= + encodeURIComponent(b)), f.setRequestHeader(Content-Type, application/x-www-form-urlencoded), f.send(a))
}
}
},
s = function() {
var b = {},
d = document.getElementsByTagName(IMG);
if (0 == d.length) return {};
var a = d[0];
if (!(naturalWidth in a && naturalHeight in a)) return {};
for (var c = 0; a = d[c]; ++c) {
var e = a.getAttribute(pagespeed_url_hash);
e && (!(e in b) && 0 < a.width && 0 < a.height && 0 < a.naturalWidth && 0 < a.naturalHeight || e in b && a.width >= b[e].k && a.height >= b[e].j) && (b[e] = {
rw: a.width,
rh: a.height,
ow: a.naturalWidth,
oh: a.naturalHeight
})
}
return b
},
t = ;
h(pagespeed.CriticalImages.getBeaconData, function() {
return t
});
h(pagespeed.CriticalImages.Run, function(b, d, a, c, e, f) {
var k = new p(b, d, a, e, f);
n = k;
c && m(function() {
window.setTimeout(function() {
r(k)
}, 0)
})
});
})();
pagespeed.CriticalImages.Run('/mod_pagespeed_beacon', 'http://www.example.com/slug', 'SLoDkQnME-', true, false, 'gxYRJPh80JY');

More From » mod-pagespeed

 Answers
0

That particular JS snippet implements critical image beaconing, which is a part of the lazyload_images filter. lazyload_images is a filter which can speed up your site by only loading images after they scroll into view. This keeps below-the-fold images (images which require vertical scrolling to see) from competing for the network with more critical resources. By default, when this filter is enabled, all images will be lazyloaded.



The critical image beacon is an enhancement to the lazyload_images filter. It runs on the client's browser and determines which images are above-the-fold by default. It send this information back to the server, and on future requests, only below-the-fold images will be lazyloaded. This helps the above-the-fold content load as quickly as possible. If it's working correctly, after a few page views, mod_pagespeed will stop beaconing on every request, and reduce the amount of pages it instruments. You can disable this feature with the ModPagespeedCriticalImagesBeaconEnabled option.



You can read more about beaconing in mod_pagespeed here, and about the lazyload_images here.


[#33582] Monday, October 12, 2015, 9 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
ellisw

Total Points: 625
Total Questions: 92
Total Answers: 88

Location: Kazakhstan
Member since Mon, Sep 26, 2022
2 Years ago
ellisw questions
Mon, Aug 23, 21, 00:00, 3 Years ago
Fri, Nov 20, 20, 00:00, 4 Years ago
Sat, Jun 20, 20, 00:00, 4 Years ago
Tue, Apr 21, 20, 00:00, 4 Years ago
;