Picset/文章中心/AI玩法
AI玩法

商品页更新后怎样找残留旧图:按清单检查 src 和 srcset

商品页更新后,可以按明确旧图清单扫描 HTML 中的 src 与 srcset,找出仍被引用的旧文件。下面用浏览器DOMParser解析,不靠正则猜标签。扫描范围限于img和source,不覆盖CSS背景或脚本动态加载,因此结果应叫已扫描范围的残留引用,而不是全站旧图已经清零。

Picset 内容研究组 · 发布/核验于 2026年10月9日 · 约 3 分钟阅读
商品页更新后怎样找残留旧图:按清单检查 src 和 srcset
简要回答

商品页更新后,可以按明确旧图清单扫描 HTML 中的 src 与 srcset,找出仍被引用的旧文件。下面用浏览器DOMParser解析,不靠正则猜标签。扫描范围限于img和source,不覆盖CSS背景或脚本动态加载,因此结果应叫已扫描范围的残留引用,而不是全站旧图已经清零。

  商品页更新后,可以按明确旧图清单扫描 HTML 中的 src 与 srcset,找出仍被引用的旧文件。下面用浏览器DOMParser解析,不靠正则猜标签。扫描范围限于img和source,不覆盖CSS背景或脚本动态加载,因此结果应叫已扫描范围的残留引用,而不是全站旧图已经清零。

  例如图片已经换成本地新版本,某个推荐模块的srcset却保留旧链接。正常屏幕上可能显示新src,高密度或不同条件下仍会选旧项。更新确认不只看主图加载,而要检查所有已知引用,且让链接关联具体商品版本。

使用明确的页面基址

  函数接收HTML、baseUrl与oldUrls。相对链接由new URL按传入基址解析,旧清单先转换为绝对地址,再比较。页面内的base标签不会改变本函数的基址,调用者需要传入实际希望核对的地址。不要让未知页面元素替扫描器决定去哪找图片。

商品页更新后怎样找残留旧图:按清单检查 src 和 srcset:图片引用、残留旧图、页面范围示意
图片引用 · 残留旧图 · 页面范围
export function findOldImages(html,baseUrl,oldUrls) {
  const base=new URL(baseUrl);
  const old=new Set(oldUrls.map(x=>new URL(x,base).href));
  const doc=new DOMParser().parseFromString(html,'text/html');
  const findings=[];
  for (const node of doc.querySelectorAll('img,source')) {
    const refs=[];
    if (node.hasAttribute('src')) refs.push(node.getAttribute('src'));
    const srcset=node.getAttribute('srcset')||'';
    // This minimal example supports normal URL + descriptor entries, not data URLs.
    if (srcset.includes('data:')) throw Error('data URL srcset unsupported');
    refs.push(...srcset.split(',').map(x=>x.trim().split(/\s+/)[0]).filter(Boolean));
    for (const raw of refs) {
      const url=new URL(raw,base).href;
      if(old.has(url)) findings.push({ tag:node.tagName.toLowerCase(),url });
    }
  }
  return findings;
}

  将模块放在本地静态服务中,在浏览器导入 findOldImages,传入已取得的页面源码。它不主动访问网站,不登录发布后台,也不更换引用。srcset解析仅支持普通URL加描述符的简化列表,含data URL时直接拒绝,避免逗号被误拆后得出假结果。

验证相对地址与多候选引用

  本次在Edge无头浏览器中解析一个构造页面:img使用../old.png,source的srcset也带该相对地址。指定页面基址后,两处都解析为旧清单中的绝对URL,结果各有一条记录。另构造data URL srcset,函数按声明限制拒绝执行,未将它当成正常链接跳过。

  查询参数和大小写按URL结果比较,不自作主张去掉。old.png?v=1与old.png?v=2可能对应不同资源策略,是否应合并由业务清单决定;程序不能为了找到更多旧图就删除版本信息。同样,返回两条记录可能来自同一URL的两个位置,它们不是重复错误,应分别确认。

  页面脚本可能在加载后生成图片,此函数读取的源码未必包含这些节点。可以另在可信页面渲染完成后获取DOM再检查,但仍须说明范围;CSS背景、内联样式与第三方组件需要独立策略。示例没有证明某个真实线上网站全部更新,也没有跨域取页能力。

  Picset图像素材进入商品页之后,[1] 版本清单可作为旧链接输入,帮助运营追踪替换范围;扫描器并不是Picset发布接口,也没有调用其后台。哪个URL属于旧包装,应来自资料与发布记录,不由脚本看图片判断。

  发现残留后返回管理任务,保存位置、旧版本和替换结果。实际修改需要编辑器或部署流程完成,再重新扫描对应范围并预览页面。静态引用检查、页面视觉检查和业务事实确认各做一层,更新便不再只靠一张主图看起来已经变化的印象。

参考资料