乐码范支持不登录就能添加反应了

细心的乐码范用户,可以早已发现每篇文章的下面有这样一个按钮:

但是,如果没登录的时候,这个按钮点了没有反应。访问乐码范的用户,也就是想看点东西而已,很多用户是不想注册账户再登录的。因此,这个功能基本上就成了摆设,没什么用。

今天,这个功能终于可以免登录使用了。

当然,如果只是宣布一个功能,那其实也没啥好说的,因为也没什么大不了的。更多是想总结一下背后产品和技术角度的一些思考。

1. 为什么有这个功能?

相比简单的“赞”,这个功能可以更表达出更丰富的感情,而不是一个简单的喜欢,并且操作的复杂度也和点赞差不多,并不会给用户带来很多的负担。评论的功能也能表达出读者的想法,但是需要用户使用键盘来输入,因此用户操作的复杂度更高一些。本站点同时有“反应”和“评论”的功能,而让“反应”的功能可以让用户免登录使用,就会让用户更容易就表达自己的感情。

2. 如何实现这个功能?

功能上的实现不必细说,想说的是如何让匿名用户就可以使用。一方面,不希望匿名用户无限制地操作;另一方面,是希望用户误操作之后,还能撤销这个操作。如果是登录用户,这两方面都容易实现,在后端数据库里保存一个用户对应的操作即可;但是匿名用户,因为没有用户ID,数据库里该如何保存?

这样一个场景,我能想到两个解决选项:

1). 在localstorage里保存当前用户的操作历史。

好处:不依赖后端数据库;

缺点:需要对登录和匿名用户实现两种不同的方案;localstorage的容量只有5M~10M,这个功能如果使用太多的空间,以后其他的功能可能就不够用了。

2). 数据库里用IP地址来代替用户的ID。

好处:可以和登录用户用同样的代码;

缺点:用户的IP地址以后会变,变了之后,这个历史也就看不到了。

看起来,两种方案都不太完善,但是后一种贵在实现简单,因此这次我就选择了用IP地址来代替用户ID的方式。