Estos días ando optimizando la velocidad de carga de la web y una de las cosas que he optimizado es la carga del ga.js de Google Analytics.
Para hacer esto lo que he implementado es la carga de este ga.js desde mi servidor.
Lo normal es tener un código tal que así:
Donde podéis ver que se llama a google-analytics.com.
Pues bien la idea es bajar este script y cargarlo desde nuestro propio servidor. Para ello cambiaremos example.com por nuestro dominio.com quedando:
Así que bueno lo que nos queda es programar un crontab para que cada día nos descargue el fichero de los servidores de google y lo tengamos en nuestro servidor.
Para hacerlo creamos un fichero php con el siguiente contenido (entre < ??>):
// script to update local version of google analytics script
// Remote file to download
$remoteFile
=
'http://www.google-analytics.com/ga.js'
;
$localfile
=
'ENTER YOUR ABSOLUTE PATH TO THE FILE HERE'
;
//For Cpanel it will be /home/USERNAME/public_html/ga.js
// Connection time out
$connTimeout
= 10;
$url
=
parse_url
(
$remoteFile
);
$host
=
$url
[
'host'
];
$path
= isset(
$url
[
'path'
]) ?
$url
[
'path'
] :
'/'
;
if
(isset(
$url
[
'query'
])) {
$path
.=
'?'
.
$url
[
'query'
];
}
$port
= isset(
$url
[
'port'
]) ?
$url
[
'port'
] :
'80'
;
$fp
= @
fsockopen
(
$host
,
'80'
,
$errno
,
$errstr
,
$connTimeout
);
if
(!
$fp
){
// On connection failure return the cached file (if it exist)
if
(
file_exists
(
$localfile
)){
readfile(
$localfile
);
}
}
else
{
// Send the header information
$header
=
"GET $path HTTP/1.0\r\n"
;
$header
.=
"Host: $host\r\n"
;
$header
.=
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\r\n"
;
$header
.=
"Accept: */*\r\n"
;
$header
.=
"Accept-Language: en-us,en;q=0.5\r\n"
;
$header
.=
"Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n"
;
$header
.=
"Keep-Alive: 300\r\n"
;
$header
.=
"Connection: keep-alive\r\n"
;
$header
.=
"Referer: http://$host\r\n\r\n"
;
fputs
(
$fp
,
$header
);
$response
=
''
;
// Get the response from the remote server
while
(
$line
=
fread
(
$fp
, 4096)){
$response
.=
$line
;
}
// Close the connection
fclose(
$fp
);
// Remove the headers
$pos
=
strpos
(
$response
,
"\r\n\r\n"
);
$response
=
substr
(
$response
,
$pos
+ 4);
// Return the processed response
echo
$response
;
// Save the response to the local file
if
(!
file_exists
(
$localfile
)){
// Try to create the file, if doesn't exist
fopen
(
$localfile
,
'w'
);
}
if
(
is_writable
(
$localfile
)) {
if
(
$fp
=
fopen
(
$localfile
,
'w'
)){
fwrite(
$fp
,
$response
);
fclose(
$fp
);
}
}
}
Finalmente en nuestro contrab tendremos:
0 8 * * * /usr/bin/php /home/domain/www/update-analytics.php