javascript - 我应该将 Google Analytics 异步代码段放在哪里

标签 javascript performance google-analytics

谷歌说

The asynchronous snippet should appear at the top of your page before the closing tag.

并给出:

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXX-X']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>

我可以将其设为外部 .js 文件吗?还是必须将其放在 html 页面本身中?

最佳答案

可以通过任何方式加载代码片段。如果您想将其包含在外部文件中,请自行解决。 Google 建议将其放入 <head>最大化被跟踪的综合浏览量,但您也可以轻松地将其加载到 <body> 中毫无困难,或者来自外部 JavaScript 文件,甚至是动态注入(inject)的 JavaScript 文件。所需要发生的只是代码片段需要执行; ga.js照顾剩下的事情。

即使您的浏览器本身缓存了代码,它仍然会执行 ga.js (其本身可能被缓存),但它发送到 Google Analytics 的数据被严重缓存破坏。即使在最严格的代理环境中,您的浏览器也无法缓存该请求。

您的分析数据“发送”到 Google Analytics 的方式是 ga.js ,在从环境、您的配置及其设置的 cookie 收集所有分析数据后,将所有这些值连接到动态图像请求上的查询字符串(通过 JavaScript 请求,但从未实际注入(inject)到 DOM 中)。这些请求具有缓存清除参数,以及每个请求通常唯一的数据。

此外,所请求的图像专门指示浏览器通过设置这些 header 来避免缓存它:

Cache-Control:private, no-cache, no-cache=Set-Cookie, proxy-revalidate
Expires:Wed, 19 Apr 2000 11:43:00 GMT
Pragma:no-cache

关于javascript - 我应该将 Google Analytics 异步代码段放在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7549838/

相关文章:

javascript - 如何在AWS上部署静态js应用程序?

javascript - 浏览器内javascript需要节点样式吗?

mysql - 维护专门的日志表或计算每个 sql 的条目数是更好的做法吗

google-analytics - 谷歌分析 : Complete a goal when two events occur

google-analytics - 谷歌分析查询资源管理器 : Is dateHourMinute a standard time or local?

javascript - 如何禁用 amCharts 跳过我的数据?

javascript - 第一次点击 Accordion 不起作用

mysql - 使用外键是否加速表连接

python - 如何使用python检查其他服务器上运行的服务

python - 从 iPython 运行 ga.read_ga 的问题