由于问题选项卡中的错误,在我们的网站上包括谷歌分析的LightHouse最佳实践得分为7%。查看问题选项卡显示Google Analytics正在发送6个没有设置必要的SameSite值的cookies。有没有办法修复/解决这个问题?
发布于 2021-07-09 00:05:23
在谷歌开发者文档中找到了解决方案的线索:https://developers.google.com/analytics/devguides/collection/analyticsjs/cookies-user-id
通过我自己的一些调整,我想出了这个解决方案:
const gacode = 'UA-XXXXX-Y';
const rootdomain = 'example.com';
const GA_LOCAL_STORAGE_KEY = 'ga:clientId';
const GA_COOKIE_KEY = 'gaCookie';
if (window.localStorage) {
ga('create', gacode, {
storage: 'none',
clientId: window.localStorage.getItem(GA_LOCAL_STORAGE_KEY),
});
ga(function (tracker) {
window.localStorage.setItem(
GA_LOCAL_STORAGE_KEY,
tracker.get('clientId')
);
});
} else {
ga('create', gacode, {
cookieName: GA_COOKIE_KEY,
cookieDomain: rootdomain,
cookieExpires: 60 * 60 * 24 * 28,
cookieUpdate: 'false',
cookieFlags: 'SameSite=None; Secure',
});
};
这将通过本地存储以无cookies模式使用分析,如果可用,则将SameSite标志添加到cookies。这可能不是默认设置,因为它限制了跨站点跟踪。
即使使用所有的技巧,如预取dns和预加载分析脚本,它仍然会使性能下降一点,因为它们的脚本标记会动态地放在第二个脚本中,但效果要好得多。至少在Issues选项卡中不会再出现不良做法。
<link rel="dns-prefetch" href="https://www.google-analytics.com" />
<link
rel="preload"
href="https://www.google-analytics.com/analytics.js"
as="script"
/>
并包括异步脚本
<script async src="https://www.google-analytics.com/analytics.js"></script>
这可以让我们回到过去的大部分时间。
希望这个答案对别人和对我一样有帮助。
https://stackoverflow.com/questions/68294405
复制相似问题