一起来看看淘宝首页的个性化

随着互联网技术以及软硬件技术的快速发展,网络已经成为人们生活中不可或缺的一部分,在长期的互联网冲浪中,网民对网络信息的辨识度日益增进,网络信息提供方也必须与时俱进,抓住用户的要害。

就拿我们淘宝的业务来看,几年前看到最多的是以商品为维度分类、分层;而现在,一切以人为中心,围绕用户做产品,帮助用户挖掘消费区间,帮助用户找到自己感兴趣的东西。淘宝首页就被拿出来开了一刀,作为淘宝的门户,它承载了万千入口,如何让用户直达兴趣之地?那自然少不了千人千面地展现内容。今年淘宝首页的改版,无处不散发个性化的味道:

淘宝首页的个性化需求

首页的内容运营不是一两个人可以完成的,四五十个业务,每个业务又有很多子业务方向,为了让所有运营有序的在首页编辑数据,主体采用 TMS 搭建,目的是隔离模块权限(当然,目前淘系也没有比 TMS 更适合的平台来搭建首页)。

为了满足不同产品的需求,同时更好地展现产品特征,设计中采用了大量的色彩,如下图所示:

同时也为业务提供了多套可供选择的模板:

在满足业务需求的前提下,更重要的是以人为中心,把用户喜欢的东西放到最醒目的位置。如下图「我常逛的」区块,通过算法介入,打分排序,从业务池子中的几十个模块中选出四个:

每个模块中的很多数据都是通过个性化接口获取的,并且为了提高运营的执行效率,需要前端实现以下功能:

  • 对于整个区块,运营可以对业务置顶、排序
  • 对于区块中的每个业务模块,支持运营配置其版式,以及配置该模块是否需要关闭个性化
  • 对于模块中的每个数据坑位,支持运营干预是否需要个性化
  • 对于部分业务模块,支持运营配置多条数据,然后算法决定出哪几条
  • 而有部分业务,会采用自己的业务数据,该模块的渲染则需要独立处理

简单而言,就是需要实现模块的位置、模板、内容(或者部分内容)个性化,同时对每个维度做开关控制。为了更好地告诉用户自己的属性,也会在导航上为用户打标:

设计也会有个性化的需求,如不同地域的人群展示不同的内容:

前端面临的问题

先记住一句话:「不能相信任何数据源」,数据源出来的数据偶尔出乎你的意料,数据缺少条目、格式不对、状态不对、回调不对等等。

从上面的个性化需求可以看出,前端面临的问题还是不少的。

首先,数据的来源较多。 每个区块采用的算法不一样,所以每个区块对应的数据接口也各不会相同,并且一个模块中,并不是所有数据都会走个性化接口,还有一部分数据来自运营的手工填写(运营手工填写的内容,部分同步渲染,部分异步渲染)。有些运营为了方便管理投放,如多个运营维护一个坑位的情况,会采用其他平台投放,前端需要通过平台接口获取数据;再加上部分业务有自己的后端服务,前端只能通过他们的后端接口获取数据;页面上还有不少阿里妈妈的广告,自然也是走他们的接口。约摸算来,整个首页的数据接口不下于 15 个。

大多数区块的渲染,需要经历两次串行的请求 。首先通过算法接口拿到需要展示的模块 id 、模块排序和模块的个性化数据,然后通过模块 id 加载对应的非个性化数据(非个性化数据中包含了运营对个性化数据的干预逻辑),合并两个数据后才能渲染一个区块。有人问:

  • 是不是可以并行请求两者?答案是不能,业务模块实在是太多了,如果把所有 id 的模块数据都拿过来,数据太多。
  • 算法那边是否可以将所有业务的数据都拿过去,然后只给前端传输整合后的数据?答案依然是不行,业务数据可能被实时修改,算法那边同步是个问题,目前没有较好的设施完成这套数据同步。
  • 是否可以让算法的数据流过业务数据,将最后需要的数据过滤出来?答案是这很靠谱,然而这套体系还没有完善,本次改版无缘用上。

第三个问题是,数据匹配问题。业务模块有一个 id,这个 id 需要前端与后端约定好;而业务的非个性化数据因为要异步加载,也有一个数据请求 id,这个 id 由 TMS 平台产生,业务模块较多,两类 id 需要人肉匹配。在前后端的交互过程中,可能会出现如下问题:

  • 算法提供的数据 id 中有一个在前端这里找不到
  • 算法提供的数据存在重复/过少/过多
  • 算法提供的数据中某一项的数据格式不对

前端还有一个模板匹配的问题,为了保证数据的纯洁性(其实是为了让运营配置后台清爽),光看业务数据是不知道该数据匹配哪种模板的,前端在区块配置列表中还得加上模块的模板 id,可以看看区块的配置后台:

第四,也是一个让人头疼的问题,兜底容灾的处理,对于单模块单数据源的渲染,容灾是一件相当轻松的事情。而对于多模块多数据源的容灾处理,其逻辑的复杂程度超乎想象。

黄金准则

为了让页面能够流畅地渲染,技术上下点功夫那是必须的!站在用户体验的角度去思考,其实很多问题都会迎刃而解:

  • 首屏一定要快
  • 滚屏一定要流畅
  • 能不加载的先别加载
  • 能不执行的先别执行
  • 渐进展现、圆滑展现

在快的基础上做到手感丝滑,需要优化的点有很多,下篇将给大家带来 淘宝首页的性能优化实践

时间: 2024-11-05 09:20:07

一起来看看淘宝首页的个性化的相关文章

聊一聊淘宝首页和它背后的一套

聊一聊淘宝首页和它背后的一套 作者: 小胡子哥 2016-06-02 12:00:00本文发布时间为2016年06月02日12时00分00秒 分类: 前端杂烩 标签: 淘宝首页 下面是正文内容评论数: 12条评论 从 14 年双十二结束开始接手淘宝首页,到如今差不多 1 年半时间,不久前完成了首页相关工作的交接.期间经历了两次改版和一次从 PHP 到 Node 的迁移,还是颇有感受,下面给大家分享下.我要说话 文章好像有点长,列个大纲会比较好:我要说话 一.相关背景介绍二.淘宝首页的整理变迁

淘宝首页性能优化实践

想必很多人都已经看到了新版的淘宝首页,它与以往不太一样,这一版页面中四处弥散着个性化的味道,由于独特的个性化需求,前端也面临各方面的技术挑战: 数据来源多 串行请求渲染一个模块 运营数据和个性化数据匹配和管理 数据兜底容灾 本次淘宝首页改版,虽已不再支持 IE6 和 IE7 等低版本的古董浏览器,但依然存在多个影响首页性能的因素: 依赖系统过多,数据的请求分为三块,其一是静态资源(如 js/css/image/iconfont 等):其二是推到 CDN 的静态数据(如运营填写的数据.前端配置信息

《淘宝首页性能优化实践》文章阅读

想必很多人都已经看到了新版的淘宝首页,它与以往不太一样,这一版页面中四处弥散着个性化的味道,由于独特的个性化需求,前端也面临各方面的技术挑战: 数据来源多 串行请求渲染一个模块 运营数据和个性化数据匹配和管理 数据兜底容灾 本次淘宝首页改版,虽已不再支持 IE6 和 IE7 等低版本的古董浏览器,但依然存在多个影响首页性能的因素: 依赖系统过多,数据的请求分为三块,其一是静态资源(如 js/css/image/iconfont 等):其二是推到 CDN 的静态数据(如运营填写的数据.前端配置信息

从PHP到Node,聊一聊淘宝首页背后的技术

从 2014 年双十二结束开始接手淘宝首页,到如今差不多 1 年半时间了,不久前完成了首页相关工作的交接.经历了两次改版和一次从 PHP 到 Node 的迁移,还是颇有感受,下面给大家分享下. 一.相关背景介绍 淘宝首页是淘宝的门面,承载着几乎淘系所有业务的入口,流量很大,量级单位为亿.近几年无线端崛起,业务重点开始向无线终端偏移(目前不能叫偏移,基本以无线为主了),所以淘宝 PC 端首页的流量也有削减,不过即便如此,它的日均 PV 依然相当高. 淘宝首页一向是内部平台和技术的试验田,它一直在变

一天造出10亿个淘宝首页,阿里工程师如何实现?

阿里妹导读:双十一手淘首页个性化场景是推荐生态链路中最大的场景之一,在手淘APP承载了整体页面的流量第一入口,对用户流量的整体承接.分发.调控,以及用户兴趣的深度探索与发现上起着至关重要的作用. 原文:http://mp.weixin.qq.com/s/vpxLTcwenvlIvj5D-8uolg 双11手淘首页的几个重要推荐场景截图如下: 如上图所示,左一场景为AIO综合会场,包括AIO日常场景(淘抢购.有好货.清单等).双11人群会场及行业会场:中间为AIOplus场景卡片综合会场,包括5张

6.4 DIV布局制作淘宝首页

为了加深对DIV层布局的理解,下面就来体验一把什么是DIV层布局. 使用Dreamweaver来绘制如图1所示的层布局页面,具体操作岁骤如下: 图1 DIV层布局页面 (1) 打开Dreamweaver,新建一个空白文档. (2) 在插入栏的“布局”类别中单击“绘制层”按钮. (3) 在“文档”窗口的“设计”视图中,执行下列操作之一: ●  按下鼠标左键拖动以绘制一个层. ●  通过按住Ctrl键并按下鼠标左键进行拖动来连续绘制多个层(只要不松开Ctrl键,就可以继续绘制新的层). (4) 绘制

js实现淘宝首页图片轮播效果

原文:http://ce.sysu.edu.cn/hope2008/Education/ShowArticle.asp?ArticleID=10585 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>淘宝首页图片轮播效果</title> <style> <!-- * {margin: 0;padding:0;} body

Android中仿淘宝首页顶部滚动自定义HorizontalScrollView定时水平自动切换图片

Android中仿淘宝首页顶部滚动自定义HorizontalScrollView定时水平自动切换图片 自定义ADPager 自定义水平滚动的ScrollView效仿ViewPager 当遇到要在ViewPager中添加多张网络请求图片的情况下,不能进行复用,导致每次都要重新去求情已经请求过的数据致使流量数据过大 自定义的数据结构解决了这个问题,固定传递的图片数据之后进行统一请求,完成后进行页面切换数据复用 代码中涉及网络请求是用的Volley网络请求框架 PicCarousel是网络数据请求的U

你刚在淘宝上买了一件衣服---详细解析技术流程(淘宝首页显示一个页面的过程)

声明:文章是之前在网络中看到并保存在电脑里的文档,原地址也无从找到.在此声明.向互联网工程师致敬! 你发现快要过年了,于是想给你的女朋友买一件毛衣,你打开了www.taobao.com.这时你的浏览器首先查询DNS服务器,将www.taobao.com转换成ip地址.不过首先你会发现,你在不同的地区或者不同的网络(电信.联通.移动)的情况下,转换后的IP地址很可能是不一样的,这首先涉及到负载均衡的第一步,通过DNS解析域名时将你的访问分配到不同的入口,同时尽可能保证你所访问的入口是所有入口中可能