Shopify加载速度优化后评分异常,求鉴定代码是否合规
Shopify站点优化代码解读与合规性判断
我自己试过压缩CSS、优化图片、给JS加async属性、删掉没用的应用这些操作,但Lighthouse评分没怎么变。后来在Upwork雇人优化Shopify站点加载速度,移动端评分从10涨到90,桌面端从60升到98,但Shopify后台的站点速度评分没明显变化。我查了被修改的代码,发现下面这段,想请人解读代码并判断是不是欺诈手段/合规操作。
<script type="text/javascript"> const observer = new MutationObserver(e => { e.forEach(({ addedNodes: e }) => { e.forEach(e => { 1 === e.nodeType && "SCRIPT" === e.tagName && ( e.innerHTML.includes("asyncLoad") && ( e.innerHTML = e.innerHTML.replace("if(window.attachEvent)", "document.addEventListener('asyncLazyLoad',function(event){asyncLoad();});if(window.attachEvent)") .replaceAll(", asyncLoad", ", function(){}") ), e.innerHTML.includes("PreviewBarInjector") && ( e.innerHTML = e.innerHTML.replace("DOMContentLoaded", "asyncLazyLoad") ), (e.className == 'analytics') && (e.type = 'text/lazyload'), (e.src.includes("assets/storefront/features")||e.src.includes("assets/shopify_pay")||e.src.includes("connect.facebook.net"))&&( e.setAttribute("data-src", e.src), e.removeAttribute("src") ) ) }) }) }); observer.observe(document.documentElement,{childList:!0,subtree:!0}) </script> {{ "//cdn.shopify.com/s/files/1/0603/7530/2276/t/1/assets/section.header.js" | script_tag}}
代码功能拆解
- 核心逻辑:监听DOM动态添加的脚本
这段代码用MutationObserver盯着整个页面的DOM变化,只要有新节点加进来,就专门挑<script>标签做手脚,本质是延迟或禁用脚本的立即执行/加载。 - 针对不同脚本的具体操作
- 带
asyncLoad的内联脚本:- 给脚本加了个
asyncLazyLoad事件监听,只有这个事件触发时才会执行asyncLoad函数 - 把原脚本里的
, asyncLoad替换成空函数,相当于暂时废掉原有的回调,等事件触发才恢复
- 给脚本加了个
- 带
PreviewBarInjector的内联脚本:- 把脚本里的
DOMContentLoaded(页面加载完成就触发)换成asyncLazyLoad,延迟脚本的执行时机
- 把脚本里的
- class是
analytics的脚本:- 把脚本类型改成
text/lazyload,浏览器默认不会执行这种自定义类型的脚本
- 把脚本类型改成
- 特定外部脚本(Shopify功能、Shopify Pay、Facebook相关):
- 把脚本的
src存到data-src里,删掉原src,这样脚本不会立刻加载,得等后续通过JS把data-src放回src才会加载
- 把脚本的
- 带
合规性与欺诈判断
- Lighthouse评分暴涨的原因
Lighthouse是实验室环境的模拟加载,这段代码通过延迟加载、暂时禁用脚本,减少了首屏的JS阻塞、请求数和资源体积,刚好命中Lighthouse的评分规则,所以分数涨得快。 - Shopify后台评分没变化的原因
Shopify的速度评分是基于真实用户的访问数据,或者有自己的测速逻辑,不会被这种“临时禁用脚本”的小技巧忽悠,真实用户访问时这些脚本最终还是会加载执行,所以后台评分没变化。 - 是不是欺诈/合规?
这属于典型的Lighthouse作弊手段:它没有真正优化站点的核心性能,只是钻了Lighthouse模拟测试的空子,让评分看起来好看,但真实用户体验没得到实质性提升——甚至可能因为脚本延迟加载,导致页面交互慢、后续加载卡顿,反而影响体验。
这种操作违反了Lighthouse的评测初衷,也不符合优化的诚信原则,本质是“刷分”而非真优化,算不上合规操作。
内容的提问来源于stack exchange,提问作者misert20
相关产品推荐
相关产品推荐

