在目前这个崇尚个性化的时代,为用户提供量身定制的个性化体验,已经成为企业确立竞争优势,吸引和维系用户的关键。
如果已经开始借助Akamai EdgeWorkers提供的无服务器网络在边缘位置开展各项创新,那么如何能够让借此提供给用户的体验更加个性化,以便与更好地满足用户实际需求?为此不妨从Edge Worker为用户给出的HTTP响应做起。
目前很多人在学习使用Akamai EdgeWorkers时,最主要的方式都是为每次访问提供一个唯一页面,页面上包含了有关Edge Worker的信息。然而是否可以通过类似的方式在原有网页上包含某些个性化信息?
这在具体实践中有很大价值,例如根据用户的地理位置或会员等级,在商品详情页上展示不同的折扣价格。
因而我们的问题就比较明确了:是否可以通过Edge Worker数据修改现有网页的HTML主体内容?
这是可以做到的!
EdgeWorkers开发团队提供了一种名为Find-replace-stream的帮助库,顾名思义,借助它我们就可以在HTTP响应的Body部分搜索特定内容并将其替换为其他数据,而替换的数据同样可以通过Edge Worker生成。相关文档、代码库以及范例可访问Edge Workers GitHub代码库。
接下来我们就通过一个实例,一起看看到底该如何实现。首先,准备一个范例页面,类似下图所示:
请注意图中框出来的区域,在这里,Edge Worker通过Edge Scape获取了用户的所在地信息,并将其展示在页面上。这是通过下列方式实现的:
首先我们使用Client Request()设置了一个属性变量USER_LOCATION,其中包含用户的所在国家/地区和城市信息(第61行)。为防止缓存了错误的位置,代码中还将位置信息添加到一个缓存键中(第63行)。
随后使用responseProvider()来实现我们的目的(第36行)。该函数可供我们构建自己的源,并将来自多个API或内容源的响应组合在一起。首先我们需要设置三个重要变量:
随后我们针对源网页发起一个HTTP请求(第41行),随后create Response()将使用该请求返回修改后的主页。真正神奇的地方在第46-48行,这几行代码调用Find-replace-stream库将“Maryland”替换成了用户实际所在地。
除此之外,我们只需要额外执行如下几个操作就够了:
% tar cvzf bundle.tgz main.js bundle.json find-replace-stream.js
这是一种非常简单的方法,但实际使用中还需要注意如下几个问题:
很多现实案例需要使用从Edge Worker得到的数据修改原有网页的内容,Find-replace-stream库大幅简化了这一过程。在配合response Provider()一起使用后,即可获得极为强大的个性化响应能力。