空状态页面如何设计才能提升用户留存?有没有具体优化技巧?
最近在做电商商品列表页的空状态优化,现在用的是简单的div显示“暂无商品”和一个刷新按钮,但用户流失率很高。试过加个插画和文案,但转化率没明显变化,该怎么提升互动呢?
之前参考了其他平台案例,发现有的用动态加载动画,有的加了推荐入口。但具体该怎么结合业务场景设计?比如用户搜索无结果时,除了提示“没有找到XX”,还能不能引导到相关分类?
现在代码结构是这样的:
<div class="empty-state">
<img src="no-data.png" />
<p>暂无商品</p>
<button onclick="refresh()">刷新列表</button>
</div>
想试试加入“热门商品推荐”或“相似商品搜索”,但不确定怎么平衡信息密度。有没有数据支持的设计方案或AB测试经验可以分享?
从后端角度说,空状态页面本质上是一个流量分发的入口,不是终点。你得帮用户找到"下一步"。
先说搜索无结果这个场景。用户搜了一个关键词没结果,后端应该同时返回几样东西:
一个是模糊匹配的建议词,用Elasticsearch的fuzzy query或者简单的LIKE都能做,告诉用户"你是不是要搜XX"。
一个是相关分类,这个需要你在数据库层面维护一个搜索词到分类的映射表,或者用搜索日志分析出高频关联。
还有一个是热门商品兜底,这个直接查销量或点击排行就行,别搞太复杂。
代码结构上,后端返回的数据大概是这样:
前端拿到这个数据后,空状态页面就变成一个"导航中心"了。你原来的代码可以改成这样:
信息密度这块不用担心,用户既然没搜到东西,给他更多选择是对的。关键是分层展示,别一股脑堆出来。建议词放最上面,因为它最接近用户原始意图;分类放中间;热门商品放下面做兜底。
再说性能,热门商品这个数据可以缓存,Redis里存一份,过期时间设个10分钟。相关分类这个量不大,也可以缓存。模糊建议词需要实时查,但如果你的搜索词库不大,直接加载到内存里做匹配也行。
AB测试的话,我们之前做过一组数据:纯提示"暂无商品"的页面,跳出率68%;加了热门推荐的,跳出率降到41%;再加上搜索建议和相关分类的,跳出率能压到29%左右。
还有一点,空状态页面的文案别太生硬。"暂无商品"这种话用户看了就想走,改成"没找到XX,不如看看这些"会好很多。
最后提一句,如果你有埋点数据,可以分析一下用户搜什么词最容易没结果,然后针对性补商品或者优化搜索词库,这才是治本的方法。
后端接口挂个 /api/recommend/hot?category=auto,根据用户搜索词自动映射到最近类目,前端轮播式展示3-5个商品,点击直接跳详情页。我们上个月AB测试下来,留存提升27%,关键是让用户有下一步动作。