1

我的网站收集用户对某些图像的评论。非注册用户可以点击“好”按钮。系统记住用户选择的最佳方式是什么?一个人只能点击一次“好”。饼干?会议?另一种方式?

4

2 回答 2

1

首先,您必须意识到所有会话技术都是基于 cookie 的。这都是很好的技术。这意味着它们都有缺点,即在 cookie 不工作的情况下它们将无法工作,用户选择将被遗忘。在那些(希望很少见)情况下,您可以将这些选择存储在 URL 中或作为 CGI 参数。在任何情况下,您都无法使其真正安全。

话虽如此,您需要权衡取舍。

饼干

如果您使用纯粹的基于 cookie 的存储,那么您可能会限制可以存储在单个域名下的 cookie 中的用户选择的数量。RFC 6265 声明了一些关于这些的应该和实现匹配这些将给你最多 200KB 这应该足够了。较早的RFC 2965说实现应该给你 80KB。还请记住,浏览器会针对您网站的每个请求向您发送 cookie。这可能意味着您的用户浏览速度较慢。

假设一个 24 位图像 ID(1600 万个可能的图像),base64 编码为 4 个字节,您可以将近 20,000 个选择打包到 cookie 中。对于 32 位图像 ID,编码为 6 个字节,您仍然可以在 cookie 中获得超过 10,000 个选择。

当 cookie 被证明太麻烦时,比如说在 1,000 票之后,您可以将浏览器切换到会话技术……或者考虑他在没有注册的情况下永远不会做到这一点;-)

会话

如果您决定将用户选择存储在会话中,那么您将不得不在服务器上专用一些存储区域。缺点是:
  1. 您无法安全地知道何时不再使用会话。因此,您需要一些机制来回收未使用的会话,通常是在固定数量的不活动后过期会话,

  2. 如果您想在多个 HTTP 服务器之间分配负载,则更难以扩展。

于 2012-12-19T15:41:08.500 回答
0

您创建一个独特的“令牌”,将其保存为 cookie(例如 IP 的哈希值 + 时间戳)。该值也与投票一起保存到数据库中。

于 2012-12-19T13:33:29.860 回答