数据库存储与 Cookie - 从数据中存储

Posted

技术标签:

【中文标题】数据库存储与 Cookie - 从数据中存储【英文标题】:Database storage vs Cookies - To store from data 【发布时间】:2013-02-20 17:11:08 【问题描述】:

祝大家今天好,

我有一个包含大约 90 到 100 个字段的表单,分为子表单,每次必须显示表单时使用 ajax 加载这些子表单。但我想在每次加载子表单时保留表单字段上的数据(假设页面意外刷新或者即使用户在子表单之间切换)。可以做到这一点的最佳方法是什么。

我在想我可以将它存储在 cookie 中,或者说存储在数据库中。但是,将它存储在数据库中意味着每次加载子表单时我都必须查询字段数据。同样,如果是 cookie,它必须读取存储在 cookie 文件中的数据。我需要一些帮助来决定什么是最有效的方式,尤其是在速度方面。

其中最好的方法是什么,或者是否有任何其他可能性在每次加载子表单时保留子表单中的字段数据(每次都通过 AJAX 加载。)

我正在使用 php 和 Codeigniter 框架。

谢谢!!

【问题讨论】:

在客户端执行。 Sisyphus 是一个很好的工具,它使用本地存储。 我希望我能接受 Tim 和 Marshall 的两个答案,两者都很棒。谢谢! 【参考方案1】:

这样的表格需要持久存储。我会考虑使用会话状态来平滑子表单加载,每当用户更新某些结果时写入数据库。就个人而言,我会从仅数据库的解决方案开始,然后在性能有问题时添加会话状态。

Cookie 并非用于存储大量数据。即使可能,它们也会大大增加请求(想象一下每个请求都会传输 100 个表单字段)。

浏览器中的本地存储也是一个选项,但我会先考虑其他选项。

【讨论】:

是的,我对饼干也有同样的感觉。【参考方案2】:

我会先用序列化来简化它:

$data = serialize(array_merge($_POST,$olddata));

那么这对您来说可能已经足够了,但是现在将它存储在任何地方都非常容易,因为它只是一个字符串。将其改回原来的状态:

$data = unserialize($data);

.. 无论您最终从何处提取它 - 数据库、会话等..

【讨论】:

【参考方案3】:

数据库散文 它也可以从其他计算机访问 您可以存储比 cookie 多得多的数据 锥体 如果您通过 ajax 检索数据,它可能会增加服务器的负载

饼干 比数据库无查询、获取和所有进程更快。 锥体 空间有限

但是你可以使用本地存储

所以答案是数据库存储

【讨论】:

以上是关于数据库存储与 Cookie - 从数据中存储的主要内容,如果未能解决你的问题,请参考以下文章

php入门05-会话控制(session与cookie)

PHP 会话控制 cookie与session 全解析

关于cookie与本地 存储的区别的问题。

Cookie&Session会话技术

Opera TV Store 应用程序中的 Cookie/持久数据存储

cookie入门(简介和设置)