如何在不使用SESSION范围的情况下设计ColdFusion页面以跨请求更新数据数组?

时间:2012-02-28 18:02:30

标签: coldfusion coldfusion-8

这更像是一个概念性问题。我有一个工作应用程序,允许用户上传地址的CSV文件,然后将数据解析为一个地址对象数组,然后根据某些规则验证每个地址对象(需要某些字段,等等)。然后该页面显示验证失败的任何地址,使用户能够编辑或删除每个地址。​​

现在,我将整个数组存储在一个SESSION变量中,为每个地址分配一个Id值,然后在用户进行编辑并提交表单时更新SESSION数组中的每个地址。​​

我试图想办法在不使用SESSION范围,或使用物理数据库或物理文件的情况下执行此操作。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

如果您不使用物理数据库,则必须使用某种持久范围。这意味着SESSION范围,CLIENT范围(如果已启用),APPLICATION范围或SERVER范围。但我认为最安全的方法(因为如果服务器出现故障,所有这些持久性作用域都被清除)是将它们存储在数据库中 - 无论该数据库是RDBMS,文本文件还是Verity或Solr集合。如果这不能回答你的问题,我会提前道歉。

答案 1 :(得分:1)

如果您想在多个请求中使用数据,则需要在某处存储/保存数据。除了你的问题排除的选项(会话,数据库,文件),我可以想到另外两个(非理想的)选项:

  1. 外部缓存机制,如memcached - 不一定推荐,因为它本质上是易变的,并不保证保留您的数据

  2. 将CSV的内容从请求传递到请求,例如通过包含JSON的隐藏FORM - 如果CSV可以变大,则不推荐

  3. 就我个人而言,我和我的同事倾向于使用临时数据库存储来解决此类问题。

答案 2 :(得分:1)

我对您的要求或用例一无所知,但如果您依赖于您的用户拥有现代浏览器,则另一个可行的选项可能是HTML5 localStorage。

略读一些个问题可能会给你一些想法。