【发布时间】:2016-10-08 17:40:48
【问题描述】:
您好,我有一个包含数百个电视节目和数万集的网站。我希望用户(未登录)能够保存他最喜欢的节目并标记他观看的剧集并使用 cookie 保存这些数据。
所以我已经在 PHP 和 JS 中实现了它。我只是想知道在 cookie 数组方面什么是最佳选择。
现在我将数据保存在一个名为“favorites”的 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)
)
【问题讨论】:
-
请注意,还有其他可能的选项;例如跟踪 cookie 和服务器端存储或使用 LocalStorage 和 AJAX。不是说它们更好,而是说它们存在。
-
自从我发现 JS 可以获取和设置 cookie 的那一刻起,我什至从未考虑过使用 AJAX 来检查 cookie 的想法。当我可以避免这种情况时,我为什么还要打扰服务器?无论如何,我已经写下了我认为最好的 3 个选项。当然,我愿意接受任何其他建议,但请记住,我并没有要求在我的网站中处理 cookie 的最佳选择,我要求的是在 cookie 数组中处理数据的最佳方法。
-
AJAX 仅用于渲染您的页面,它用于基于 LocalStorage 生成动态内容。
标签: javascript php arrays json cookies