【问题标题】:Storing large amounts of info within a cookie在 cookie 中存储大量信息
【发布时间】:2011-09-03 00:29:27
【问题描述】:

我正在开发一个演示工具(PHP、jQuery、XHTML),到目前为止一切顺利,除了我有一个问题,我需要临时保存某些信息,我正在通过 cookie 来做,但是 cookie ' Apache 中的限制是 4Kb,我在 cookie 中不再有空间,所以我想知道如果我仍然不想将任何信息发送到数据库或文本文件,我如何才能毫无问题地继续保存在 cookie 中。

我不知道是否可以通过使用路径或其他域来解决问题。

非常感谢您能提供给我的任何帮助:)。

【问题讨论】:

  • 描述您要存储的 cookie 数据。 (你知道,这正是存在简单/惰性会话替代方案的原因。也许.localStorage 可能是一个选项?)

标签: php jquery cookies


【解决方案1】:

会话类似于 Cookie,但它们只是给客户端一个唯一的 ID(“会话 ID”)并将其余数据保存在服务器上。

当然,这存储在数据库或文件中,但这对您来说是完全透明的,不会有 SQL 查询或文件读取或其他任何事情。

您只需将所有$_COOKIE 替换为$_SESSION 并将session_start(); 放在代码顶部:http://www.tizag.com/phpT/phpsessions.php

但有一个缺点:PHP 设置所有会话 cookie 时没有超时,浏览器通常将其视为“每当浏览器关闭时删除此 cookie”。有关解决方法,请参阅此问题:How do I expire a PHP session after 30 minutes?

【讨论】:

    【解决方案2】:

    首先,您应该考虑是否真的需要在 cookie 中保存这么多数据。也许您可以压缩您的信息,或者只是不需要所有信息?

    原因是:cookie 在每次向服务器请求时发送(这可能超过 1 个)。如果您提供来自同一个域的图像,您可能会收到超过 20 个请求,每个请求都发送这个大 cookie。假设您的 cookie 包含 5kb 的数据,那么您有 100kb 用于循环您的信息。

    见:http://developer.yahoo.com/performance/rules.html#cookie_size

    如果您只需要当前会​​话的信息,为什么不将其保存到会话变量(或 memcache 等)中? 如果您只是在 cookie 中保存一个 id 并且如果您的会话中没有该 id 的任何内容,则可以从数据库中加载它并将其保存在会话中。这样您就可以在每个会话中进行一次访问。

    如果您提供更多背景信息可能会更好。

    【讨论】:

      【解决方案3】:

      您可以创建多个 cookie,但这是个坏主意。 cookie 将随每个请求通过网络。考虑将会话信息放在数据库或缓存层中。

      【讨论】:

        【解决方案4】:

        我猜你可以用 DOM 元素存储非敏感信息。如果你使用 jQuery,你可以使用 .data() - http://api.jquery.com/data/

        但是,在页面完全重新加载后它就消失了。

        【讨论】:

          猜你喜欢
          • 2011-09-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多