2011-09-02 52 views
1

我工作的一个演示工具(PHP,jQuery的,XHTML)内,到目前为止这么好,但我有一个问题,我需要暂时保存某些信息,我通过cookies做到这一点,但是在Apache中cookie的限制是4Kb,并且我在cookie中没有空间,所以我想知道如果我仍然不想发送任何问题信息到数据库或文本文件。存储大量信息的一个cookie

我不知道是否可能通过使用路径或其他领域我也许能工作的事情了。

我真的很感激任何帮助,您可以提供我:)。

+1

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

回答

0

您可以创建多个Cookie,但这不是一个好主意。每次请求cookies都会通过网络传输。考虑将会话信息放入数据库或缓存层。

2

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

当然,这是存储在一个数据库或文件,但这是完全透明的,没有任何关于SQL查询或文件读取或任何东西搞乱。

你只需要$_SESSION全部更换$_COOKIE,把session_start();在你的代码的顶部:http://www.tizag.com/phpT/phpsessions.php

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

1

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

原因是:cookie会在每个请求发送到服务器(这可能会超过1)。如果您从同一个域提供图片,则可能会发送超过20个请求,每个请求都发送这个大型cookie。假设你的cookie包含5kb的数据,你只需要100kb来循环你的信息。

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

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

也许它更好,如果你提供一些背景资料。

0

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

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