您好,我有一个网站,其中包含数百个电视节目和数万集。我希望用户(未登录)能够保存他最喜欢的节目并标记他观看过的剧集并使用 cookie 保存这些数据。
所以我已经用 PHP 和 JS 实现了它。我只是想知道关于 cookie 数组的最佳选择是什么。
现在我将数据保存在名为“收藏夹”的 cookie 中,这是一个 JSON 编码数组,仅包含电视节目的 ID。 在“已观看”cookie 中,有用户标记为已观看的剧集的 ID。
性能和内存的最佳选择是什么?您必须记住,这也适用于手机,因此,如果用户将数千集标记为已观看,我不希望这会减慢一切。
下面的代码不是真正的代码,只是为了让您了解选项之间的区别。
选项 1
一个名为“watched”的 cookie,它是一个包含 ID 的 JSON 编码数组。我需要检查数组是否包含该值
$_COOKIE['watched'] = array(1,2,3,4,...)
使用此选项,在电视节目页面中,我总是必须选择整个数组并检查每个剧集 ID 是否是数组中的一个值。
选项 2
每个 ID 一个 cookie,例如称为“watched_[ID]”。我只是检查它是否存在。
exists( $_COOKIE['watched_1'] ) ? watched : !watched
exists( $_COOKIE['watched_2'] ) ? watched : !watched
选项 3
一个名为“watched”的 cookie,它是一个关联的 JSON 编码数组,包含每个电视节目的数组,例如“watched[show_ID]”,其中每个仅包含标记为已观看的剧集的 ID到那个节目。 (因此在电视节目页面中,我首先检查“已观看[show_ID]”,然后我已经拥有所有已观看的剧集,而不是将每个剧集 ID 与选项 1 中的数组“已观看”进行比较
$_COOKIE['watched'] = array(
1 => array(1,2,3),
2 => array(4,5,6)
)
最佳答案
您选择的方法将完全取决于您拥有的用户类型,如果您的情况下数据量通常很大,那么您应该选择选项 3,因为关联数组是处理大数据量的好方法,因为它循环遍历它们并获得结果会有些容易。
如果您的用户数据集相当小,那么选项 2 是最佳方法,因为我们为每个节目设置了不同的 cookie,您可以立即检查相应的值。
此外,我希望您通过 html5 api 使用索引数据库作为您的问题的解决方案,因为它提供客户端数据库,而且它是一个持久数据库。 希望这有帮助
关于javascript - PHP 和 JS 中 cookie 数组的最佳性能选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37702753/