在cookie中存储大量信息

时间:2011-09-02 16:22:36

标签: php jquery cookies

我正在研究一个演示工具(PHP,jQuery,XHTML),到目前为止,除了我有问题,我需要暂时保存某些信息,我是通过cookie来做的,但是这些cookie Apache中的限制是4Kb,我在cookie中不再有空间,所以我想知道如果我仍然不想向数据库或文本文件发送任何信息,我怎么能在没有问题的情况下保存在cookie中。 / p>

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

我真的很感激你能给我的任何帮助:)。

4 个答案:

答案 0 :(得分:2)

会话就像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?

答案 1 :(得分:1)

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

原因是:每次向服务器发送请求时都会发送cookie(这可能超过1)。如果您提供来自同一域的图像,则可能会收到超过20个请求,每个请求都会发送此大型Cookie。假设你的cookie拥有5kb的数据,你只需要100kb来循环你的信息。

请参阅:http://developer.yahoo.com/performance/rules.html#cookie_size

如果您只需要当前会​​话的信息,为什么不将它保存到会话var(或memcache等.pp。)? 也许没关系,如果你只是在cookie中保存一个id,如果你的会话中没有这个id,你从数据库加载它并将其保存在会话中。所以你每次会话都有一次访问权限。

如果您提供更多背景信息,也许会更好。

答案 2 :(得分:0)

您可以创建多个Cookie,但这不是一个好主意。每次请求都会发送cookie。请考虑将会话信息放在数据库或缓存层中。

答案 3 :(得分:0)

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

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