坑点and埋坑点 - 别让Cookie持续增长

  • 作者:KK

  • 发表日期:2016.10.21


比如有个业务数据的点赞功能,由于要求不高,程序员选择了使用Cookie记住赞过了哪个没赞过哪个,然后在赞的时候判断Cookie里是否有这个ID,有就认为赞过了,提醒不能再赞

代码大概是这样的:

function support($productId){
	$supportedIds = explode(',', $_COOKIE['supportedIds']);
	if(in_array($productId, $supportedIds)){
		exit('您已经赞过了,请勿重复点赞');
	}
	
	$supportedIds[] = $productId;
	setcookie('supportedIds', implode(',', $supportedIds), strtotime('+365day'));
}

这样就有一个问题,由于每次浏览器发起HTTP请求时都会带上Cookie

每记录一个赞过的ID,浏览器保存的cookie就长大一点,然后下次请求服务端时发送过去的cookie又会变得更大

这根本就是只有长大没有变小的节奏啊

而服务器接收请求数据时,也需要变量来保存这些cookie的对吧,人家的变量也是有最大长度的嘛,所以当这个cookie非常非常大的时候,服务器就会装载不下这个cookie而报错了

关于cookie最大的量是多少,其实没有标准,如果在乎的话就好好调研一下各服务器不同版本的cookie大小限制吧

但反正我不会让cookie像滚雪球一样逐渐变大,比如可以做一些判断自动删除一部分或什么的,何况现在还有localStorage和sessionStorage这些储存载体可以使用,解决方案已经越来越多了