每页50条,第二页偶尔重复第一页最后几个SKU,批量同步因此重复创建。接口没缓存,根因是排序不稳定:只按updated_at排序,同一秒更新的几十个商品顺序没有保证;同步期间还有新数据插入,offset分页自然漂移。

searchCriteria[sortOrders][0][field]=updated_at
searchCriteria[sortOrders][0][direction]=ASC
searchCriteria[sortOrders][1][field]=entity_id
searchCriteria[sortOrders][1][direction]=ASC

加entity_id作为第二排序键能稳定同时间数据,但大规模持续同步更适合游标:记录最后的(updated_at, entity_id),下一批查询大于这个组合,而不是pageSize乘currentPage。

一条边界条件

如果商品在同步过程中被再次更新到未来时间,它可能下一轮再出现。消费端必须按entity_id幂等更新,不能假设一条记录只会见一次。

测试时故意让100个商品拥有相同updated_at,并在翻页中间更新几条数据。结果集合去重后应完整,且重跑同一游标不会产生副作用。