一个令人烦恼的问题,确实如此。恐怕这不是一个易于解决的问题。但你可以使用一个cron。
首先,请记住,Google很不可能因为他们自己的工具(如Analytics)而对你进行惩罚。然而,正如之前提到的那样,可以使用cron来解决这个问题,它基本上意味着您在本地加载JavaScript并拉取更新的脚本。
如何做到这一点:
首先,您需要下载正在运行的脚本。我将以Google Analytics为例(这似乎是人们抱怨最多的问题脚本,但您可以为任何外部脚本复制此操作)。
在代码中查找脚本的名称,在我们的例子中为:google-analytics.com/ga.js。将此URL放入您的Web浏览器中,它将显示源代码。只需将其复制并保存为ga.js即可。
将这个新创建的JavaScript文件保存到您的Web服务器上,在我的情况下:
- JS
- ga.js
接下来,您需要更新调用脚本的页面上的代码,并更改调用JavaScript文件的目录。在我们的案例中,我们将再次更改此行:
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
为了
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.yoursite.com/js/ga.js';
现在,您的网站将从您的网站本地运行脚本!但是,这意味着脚本永远不会更新。除非您每周重新运行此短过程。这取决于您...但我太懒了。
这就是CRON发挥作用的地方:
几乎每个托管服务都会为您提供设置cron
作业的选项。在Hostinger上,它位于您的Hosting Panel上,在GoDaddy上,您将在Content选项下找到它。
将以下脚本放入您的cron
中,您只需要更改变量$localfile
的绝对路径即可。该脚本的功能是从Google中获取更新后的ga.js
文件。您可以设置执行此过程的时间范围。从每小时一次到一个月一次及以上。
如果您还要针对Google Analytics以外的外部文件执行此操作,则还需要更改变量$remoteFile
。因此,$remoteFile
是指外部JavaScript文件的URL,而变量$localFile
则是指新的本地存储文件的路径,就这么简单!
<?
$remoteFile = 'http://www.google-analytics.com/ga.js';
$localfile = 'ENTER YOUR ABSOLUTE PATH TO THE FILE HERE';
$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){
if(file_exists($localfile)){
readfile($localfile);
}
} else {
$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 = '';
while($line = fread($fp, 4096)){
$response .= $line;
}
fclose( $fp );
$pos = strpos($response, "\r\n\r\n");
$response = substr($response, $pos + 4);
echo $response;
if(!file_exists($localfile)){
fopen($localfile, 'w');
}
if(is_writable($localfile)) {
if($fp = fopen($localfile, 'w')){
fwrite($fp, $response);
fclose($fp);
}
}
}
?>
那就是这样,它可以解决您在Leverage Browser Caching第三方脚本方面遇到的任何问题。
来源:
http://diywpblog.com/leverage-browser-cache-optimize-google-analytics/
注意:
实际上,这些文件对您的页面速度并没有太大影响。但我可以理解您对谷歌惩罚的担忧。但只有当您运行大量这些外部脚本时才会发生这种情况。与谷歌相关的任何内容也不会对您产生负面影响,正如我之前所述。