【问题标题】:efficency of storing data in cookies在 cookie 中存储数据的效率
【发布时间】:2009-07-23 03:42:54
【问题描述】:

在我的非会员网站上,我想跟踪用户最后通过 Cookie 收听的歌曲

此 cookie 中值的最大数量可能是 100 个值。歌曲的ID:(30,31,32,32,34.......等等。)

有什么理由不这样做吗?

用户无论如何都没有经过身份验证。

这并不是为了他们的利益而必需的。

我最担心它可能会影响页面性能。

【问题讨论】:

    标签: php html cookies


    【解决方案1】:

    如果您只想使用它为用户显示,我不明白为什么不这样做。它只会增加从用户发送到服务器的带宽。

    但是如果想看看你的用户在听什么,我建议你使用一个数据库来代替,只向用户发送一个数据库表的哈希值。像这样:

    userid int(11)
    hash string(26)
    song string(100)
    

    然后,只需将哈希参数发送给用户,并从数据库中获取所有歌曲。

    【讨论】:

    • 没有。只是为了他们的利益。这样他们就可以看到他们已经听过哪些歌曲。无论如何,这并不是真正重要的,只是对他们有帮助。
    • 如果你不想展示他们在现场听了他们整个“生活”的内容,它会起作用。由于它是一个 cookie,因此当用户清理它或它们的生命周期结束时,它们就会消失。但是为了展示他们“刚刚”听到的内容,这是一个不错的选择。 :)
    • 是的,基本上只有 2 周的寿命,我会做到的,所以它在任何时候都只包含大约 100 个值。
    【解决方案2】:

    保留数据有多重要? Cookies 不保证在下一个会话期间提供;用户可能将他们的浏览器配置为在关闭时丢弃 cookie,或者默默地忽略来自非白名单域的 cookie。 Cookie 也可能在用户访问您的网站之间自然过期。

    在我看来,cookie 作为任何重要数据的主要存储是一个糟糕的选择。我认为您最好将信息存储在数据库中;它应该是一个足够便宜的查询,可以在需要时将其拉回,并且正如 Nathan 指出的那样,信息以一种便于您可能希望执行的任何数据挖掘、报告或比较操作的形式对您保持可见。

    【讨论】:

    • 一点都不重要。这只是为了他们的利益。而且它没有经过身份验证,所以您认为信息的未经身份验证的数据库存储比 cookie 更有可能存在吗?我的大多数用户只是普通用户,他们不会删除他们的 cookie 或阻止 cookie 或类似的东西。
    • 如果用户未通过身份验证,则没有理由使用数据库,因为您需要在用户浏览器上使用 cookie 来跟踪数据。
    • 我认为 Rob 的观点是,仅使用 cookie 会禁止他出于自己的统计目的访问数据。
    【解决方案3】:

    我认为通过数据库执行此操作会将所有数据保留在您的端。您仍然可以向他们展示他们最近听过的 100 首歌曲是什么。如果您要求他们经过身份验证才能查看最后 100 首歌曲,那么我认为将数据保存在数据库中(减少带宽等)更有意义。

    【讨论】:

    • 但它肯定没有经过身份验证,所以把它放在他们身边似乎很简单?
    【解决方案4】:

    看起来还可以。请务必将您从 cookie 中获得的内容过滤/列入白名单。

    【讨论】:

    • 这是为什么呢?它不会用于查询或任何事情。还需要吗?
    • 如果您不使用它进行查询,则没有必要。我假设歌曲将在数据库中,您将从存储在 cookie 中的 id 中检索它们。
    • 其实这不是一个好的答案。过滤输入总是好的,并且可以防止不可预见的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    • 2011-07-03
    • 2014-12-30
    • 2012-11-16
    相关资源
    最近更新 更多